【发布时间】:2012-07-03 14:57:27
【问题描述】:
我尝试使用 LLVM clang 集成宏汇编器(XCode 4.3 附带的 LLVM 编译器)编译 NEON 汇编代码并得到以下错误:
vld1.8 {D0}, [R0] - invalid operand for instruction
可能是什么原因?为什么这条指令被 GAS 成功编译为 Android 而不能被 'clang -integrated-as ...' 编译为 iOS?谢谢。
【问题讨论】:
我尝试使用 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 汇编问题(选择正确的设备、小写指令等...):Useful Stackoverflow answer
【讨论】: