我想尝试一些与苹果iOS的ARM汇编代码只是为了教育目的。 我想从Xcode中的一些行代码开始。 我的理解是,我需要编译一个iOS设备,例如我的iPhone,这意味着我需要支付99美元/年的会员资格。 我不认为我可以在iOS手机模拟器上使用ASM汇编代码。 我很难在Xcode环境下用iPhone查找有关ARM汇编代码的示例,书籍或文档。 我做错了吗? 也许iOS不是学习ARM组件的用户最友好的环境。
我想了解Mach-o文件是如何工作的,并且已经在可用的在线资源方面取得了很大进展(特别是苹果页面: http : //developer.apple.com/library/mac/#documentation /developertools/conceptual/MachORuntime/Reference/reference.html ),但是我在理解符号存根如何工作方面遇到了障碍。 使用“otool -l”我看到以下部分: Section sectname __symbolstub1 segname __TEXT addr 0x00005fc0 size 0x00000040 offset 20416 align 2^2 (4) reloff 0 nreloc 0 flags 0x80000408 但是,当我在hex编辑器中查看二进制文件中的数据时,我看到以下4个字节重复一遍: 00005FC0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88 00005FD0 38 F0 9F E5 38 F0 9F […]
只是为了教育目的,我想添加一个函数到现有的iPhone应用程序,用ARM程序集编写。 一般来说,我不需要关于ARM程序集的教程,因为我已经阅读了太多的教程。 我只是不知道如何实际运行代码! 我想要做的是这样的: useless.h: void useless(); useless.s: useless: bx lr 如果这也可以在模拟器上工作,那就好了…在模拟器上.s文件不会编译,所以我也许应该这样做: useless.s: #if I_AM_ARM useless: bx lr #endif useless.c: #if !I_AM_ARM void useless() { } #endif 我知道我使用的语法已经坏了,但是我该如何正确写入? (因为我想尝试一些内联汇编,打破模拟器上的应用程序是不行的…) 次好的select是使用内联汇编,但是我更愿意使用非内联汇编。 谢谢! 编辑:我想学习ARM汇编,所以我想找一个方法来编译ARM汇编代码,并且汇编成EXECUTE的汇编代码。
这个代码(非常相似的代码,没有试过这个代码)使用Android NDK编译,而不是用XCode / armv7 + arm64 / iOS 评论中的错误: uint32_t *src; uint32_t *dst; #ifdef __ARM_NEON __asm__ volatile( "vld1.32 {d0, d1}, [%[src]] \n" // error: Vector register expected "vrev32.8 q0, q0 \n" // error: Unrecognized instruction mnemonic "vst1.32 {d0, d1}, [%[dst]] \n" // error: Vector register expected : : [src]"r"(src), [dst]"r"(dst) : "d0", "d1" ); #endif […]