2013-11-14 53 views
2

我正在嘗試爲新的arm64 arch編譯我的lib。我有一堆NEON組件,並且對於他們所有人我收到一個錯誤asm(arm64)中未知的寄存器名稱「q0」

asm中未知的寄存器名稱「q0」。

即使我寫水木清華這樣簡單:

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

我想arm64支持NEON。我錯過了什麼嗎?

回答

4

「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指令和寄存器佈局是全新的。您需要重新編寫或修改新架構的彙編代碼。

+0

沒有。同樣的錯誤。 – Max

+0

我得到這兩個寄存器的錯誤 – Max

+0

請發佈您正在編譯的實際代碼和完整的錯誤消息。但是,正如我所指出的那樣,arm32組裝將需要針對arm64進行大量修改。 –

相關問題