XCode 7:如何assemble armv7、arm64、x86 .S文件分开?

XCode 7 : How to assemble armv7, arm64, and x86 .S files separately?

我正在将一个仿真器项目移植到 iOS,其中包括 .S 文件中的一些 ARM 和 X86 机器代码。如何配置我的项目,使 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 构建。