如何在 iOS 设备上编译 ARM 程序集文件和在 iOS 模拟器上使用常规 C 之间进行选择

Posted

技术标签:

【中文标题】如何在 iOS 设备上编译 ARM 程序集文件和在 iOS 模拟器上使用常规 C 之间进行选择【英文标题】:How to choose between compiling ARM assembly file if iOS device and using regular C if iOS simulator 【发布时间】:2011-08-11 22:21:58 【问题描述】:

在一个项目中,我有一个用 ARM 程序集编写的文件,该文件使用 NEON 来优化我正在执行的计算。我还有一个文件,除了它是用 C 语言编写的之外,它执行完全相同的操作。目前我只是注释掉在程序集中定义的 C 函数,然后添加一个

extern void myFunction();

到 C 文件。我想做的是在C文件中有这个

#ifdef device
extern void myFunction();
#else
void myFunction() 
   /* code here */

#endif

我还需要在程序集文件中类似的东西,但我不确定如何在 ARM 程序集中执行预处理器指令。

总而言之,我正在寻找一个预处理器定义,它告诉我我正在为什么设备构建以及在汇编中使用预处理器指令的方法。

【问题讨论】:

【参考方案1】:

在你的 C 文件中:

#if defined __arm__
extern void myFunction();
#else
void myFunction() 
   /* code here */

#endif

在您的程序集文件中:

#if defined __arm__
/* code here */
#endif

(Xcode 也将 C 预处理器应用于 .s 文件)。

【讨论】:

感谢工作!我之前有类似的东西,但我放弃了它,因为预处理器定义 TARGET_IPHONE_SIMULATOR 在我的程序集文件中不可用,但 arm 是。

以上是关于如何在 iOS 设备上编译 ARM 程序集文件和在 iOS 模拟器上使用常规 C 之间进行选择的主要内容,如果未能解决你的问题,请参考以下文章

在 Arm 板上编译的 makefile 编译错误

在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?

关于 arm 和 x86 架构的思考

关于 arm 和 x86 架构的思考

#yyds干货盘点#关于 arm 和 x86 架构的思考

在 64 位 Arm 上编译和安装 Chez 方案?