我尝试使用 LLVM clang 集成宏汇编器(XCode 4.3 附带的 LLVM 编译器)编译 NEON 汇编代码并得到以下错误:
vld1.8 {D0}, [R0] - invalid operand for instruction
可能是什么原因?为什么这条指令被 GAS 成功编译为 Android 而不能被 'clang -integrated-as ...' 编译为 iOS?谢谢。
经过一天的实验,我找到了解决方案。我刚刚从 SVN 源代码库(版本 3.2)编译了 LLVM。与 XCode 4.3.1 附带的 LLVM 3.0svn 相比,LLVM 3.2svn 中集成的宏汇编器对 ARM NEON ISA 的支持要好得多。VLD NEON 指令的问题已自动解决。
那些使用gas-preprocessor.pl Perl 脚本的人可能会尝试从 GAS 1.38(它是 Mac OS X 10.7.X 上 LLVM 使用的外部 GNU 汇编器)切换到 LLVM 集成宏汇编器并停止使用不必要的预处理。
我没有使用 clang 进行组装,但以下站点可能会有所帮助:ARM Assembly
此外,这可能会有所帮助,因为它解决了其他人的 ARM 程序集问题(选择正确的设备、小写指令等......):有用的 Stackoverflow 答案