簡體   English   中英

程序集未知助記符AArch64 ARMv8

[英]Assembly unknown mnemonic AArch64 ARMv8

我正在嘗試使用幾個為ARMv8 AArch64體系結構編寫的匯編文件來編譯項目(來自GitHub: link )。 當我嘗試編譯這些文件時,幾乎每一行都會出現相同的錯誤,它以以下內容開頭:

authenc_ac_gcm_low.S:匯編程序消息:

authenc_ac_gcm_low.S:80: Error: unknown mnemonic `ld1.16b' -- `ld1.16b {v0},[x1]'
authenc_ac_gcm_low.S:81: Error: unknown mnemonic `rbit.16b' -- `rbit.16b v0,v0'
authenc_ac_gcm_low.S:82: Error: unknown mnemonic `st1.16b' -- `st1.16b {v0},[x0]'
authenc_ac_gcm_low.S:90: Error: unknown mnemonic `ld1.16b' -- `ld1.16b {v24},[x0]'
authenc_ac_gcm_low.S:92: Error: unknown mnemonic `ld1.16b' -- `ld1.16b {v0,v1,v2,v3},[x1],#64'
authenc_ac_gcm_low.S:93: Error: unknown mnemonic `ld1.16b' -- `ld1.16b {v4,v5,v6,v7},[x1]'

代碼的一小部分:(78至87行)

ac_gcm_convert_low:
_ac_gcm_convert_low:
    ld1.16b {v0}, [x1]
    rbit.16b v0, v0
    st1.16b {v0}, [x0]
    ret

ac_gcm_ghash_low:
_ac_gcm_ghash_low:
    cbz x3, exit //this might be the only line it doesn't error

我將Linaro交叉編譯器用於AArch64,為了進行編譯,我使用了-mcpu = cortex-a53 + crypto標志; 不這樣做會導致“沒有這樣的指令”錯誤。 我在Assembly方面的經驗很少,很顯然我在這里犯了一些錯誤,但我找不到它。 如何擺脫錯誤?

看起來這就是怪誕的Apple語法-GCC使用略微冗長的體系結構語法 ,其中大小說明符用於每個寄存器參數,而不是指令本身,例如

ld1 {v0.16b}, [x1]
rbit v0.16b, v0.16b
st1 {v0.16b}, [x0]

我不相信AArch64 binutils可以支持Apple語法,因此我認為可用的解決方案僅限於“手動修復代碼”或“嘗試使用Clang / LLVM”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM