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 エラー No such instruction: 'pld [r1,'.これをコンパイルする方法はありますか?

4

1 に答える 1

2

OK、精神的なデバッグの時間です。私はここに 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'

実際に ARM アセンブラを使用できるようにするには、clang を使用することをお勧めします。

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