asm中的未知寄存器名称“q0”(arm64)

我目前正在试图编译我的lib为新的arm64拱。 我有一堆NEON程序集,并为他们所有人收到一个错误

asm中的未知寄存器名称“q0”。

即使我这样写简单:

asm ( "" : : : "q0", "q1", "q2", "q3" ); 

我以为arm64支持NEON。 我错过了什么?

“V0”:

 scanon$ cat bar.c int foo(void) { __asm__("":::"q0"); return 0; } scanon$ xcrun -sdk iphoneos clang bar.c -arch arm64 -c bar.c:2:16: error: unknown register name 'q0' in asm __asm__("":::"q0"); ^ 1 error generated. scanon$ cat foo.c int foo(void) { __asm__("":::"v0"); return 0; } scanon$ xcrun -sdk iphoneos clang foo.c -arch arm64 -c scanon$ 

arm64是一个新的ISA。 实际的NEON指令和寄存器布局是全新的。 您将需要重新编写或适应新架构的汇编代码。