XCode 7:如何分别组装armv7、arm64和x86 . s文件



我正在移植一个模拟器项目到iOS,其中包括一些ARM和X86机器代码在。s文件。我如何配置我的项目,使ARM代码仅为真正的iOS硬件编译,而X86代码仅为模拟器编译。

此外,我的ARM代码是ARMv7,而不是ARM64。在我看来,我应该可以加上"。将machine armv7"指令放入一个ARM . s文件中,以使汇编程序使用旧的指令集(它应该在arm64上运行良好,对吧?)然而,汇编程序给出了一个错误:"error: unknown directive .machine armv7".

最简单的解决方案是使用C预处理器,Xcode默认运行在汇编文件上:

file_x86_64.s:
#if defined __x86_64__
// x86_64 assembly code
#endif
file_armv7.s:
#if defined __arm__
// arm assembly code
#endif

等。armv7代码将在arm64设备上运行,这是对的,但它不能链接到arm64可执行文件中,因此您需要有一个C实现或arm64程序集才能为arm64构建。

最新更新