0

我正在尝试编译包含以下代码的 .s 文件:

.text
.globl memcpy_armneon
memcpy_armneon:
    pld [r1, #0xC0]
    vldm r1!,{d0-d7}
    vstm r0!,{d0-d7}
    subs r2,r2,#0x40
    bge memcpy_armneon

但 XCode 4.5 抱怨:

“LLVM GCC 4.2 错误没有这样的指令:'pld [r1,'。有没有办法编译这个?

4

1 回答 1

2

好的,现在是心理调试时间。我这里有 Xcode 4.6,它似乎甚至没有LLVM GCC 的 ARM 版本:

$ gcc -arch armv7 -c -o example.o example.s 
llvm-gcc-4.2: error trying to exec '/usr/bin/../llvm-gcc-4.2/bin/arm-apple-darwin11-llvm-gcc-4.2': execvp: No such file or directory

这使我相信您正在将此代码交给英特尔汇编程序。事实上,当我这样做时,我得到的正是你的文件的错误措辞:

$ gcc -c -o example.o example.s 
example.s:5:no such instruction: `pld [r1,'
example.s:6:no such instruction: `vldm r1!,{d0-d7}'
example.s:7:no such instruction: `vstm r0!,{d0-d7}'
example.s:8:too many memory references for `sub'
example.s:9:no such instruction: `bge memcpy_armneon'

您可能想要使用 clang 以便实际使用 ARM 汇编程序:

clang -arch armv7 -c -o example.o example.s 
于 2013-02-02T21:39:15.153 回答