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

标签 iphone c compiler-construction assembly arm

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

extern void myFunction();

到 C 文件。我想做的是将其放在 C 文件中

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

我还需要在汇编文件中添加类似的内容,但我不确定如何在 ARM 汇编中执行预处理器指令。

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

最佳答案

在你的 C 文件中:

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

在您的程序集文件中:

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

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

关于iphone - 如何在 iOS 设备上编译 ARM 汇编文件和 iOS 模拟器使用常规 C 之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7033632/

相关文章:

iphone - 如何更改 iPhone 左右相机 Overlayview 方向横向?

c - 段错误: core dumped during execution of multi-threaded program

c - libspotify 在调用 sp_session_create 后因 segFault 而崩溃

compiler-construction - Web Essentials Less 上的导入文件保存不编译主文件

iphone - 位置管理器在后台一段时间后停止工作

iphone - 如何在单击按钮时加载 UIView

iphone - 适用于 BlackBerry 和 iPhone 的测试自动化工具

python - Cython 和 gcc : can't run compiled program

c++ - 如何为 Windows 版 Mathematica 设置英特尔 C++ Composer XE?

javascript - 轻量级 javascript 到 javascript 解析器