【问题标题】:Error compiling NEON for iOS 5.1 with clang integrated assembler使用 clang 集成汇编器为 iOS 5.1 编译 NEON 时出错
【发布时间】: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?谢谢。

【问题讨论】:

    标签: ios assembly clang neon


    【解决方案1】:

    经过一天的试验,我找到了解决方案。我刚刚从 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 集成宏汇编器并停止使用不必要的预处理。

    【讨论】:

      【解决方案2】:

      我没有使用 clang 进行组装,但以下网站可能会有所帮助:ARM Assembly

      此外,这可能会有所帮助,因为它解决了其他人的 ARM 汇编问题(选择正确的设备、小写指令等...):Useful Stackoverflow answer

      【讨论】:

      • 谢谢!我已经看过这些文章了。总的来说,它们非常有帮助。但是,不幸的是,它们适用于 GAS 而不是 LLVM clang 的集成宏汇编器。为什么我不喜欢使用 GAS 为 iOS 编译程序集,因为它已经很老了,而且对宏的支持很差。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多