我正在将一个模拟器项目移植到iOS,其中包含.S文件中的一些ARM和X86机器代码。如何配置我的项目,以便仅为真实的iOS硬件编译ARM代码,并且仅为模拟器编译X86代码。
此外,我的ARM代码是ARMv7,而不是ARM64。 据我所知,我应该能够将一个“.machine armv7”指令放入一个ARM .S文件中,以使汇编程序使用较旧的指令集(在arm64上运行正常,对吧?)。但是汇编程序会出错:“错误:未知指令.machine armv7”。
答案 0 :(得分:1)
最简单的解决方案是使用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