2015-05-27 29 views
2

我试图编译一个项目(从GitHub:link)与几个汇编文件,这是为ARMv8 AArch64架构编写的。当我尝试编译这些文件,我得到的几乎每一个行上同样的错误,它的开头为:装配未知助记符AArch64 ARMv8

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]' 

代码的小部分: (直到87线78)

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 

我使用AArch64的Linaro的交叉编译器,编译我利用-mcpu =皮质-A53 +加密标志;不这样做导致“没有这样的指令”错误。 我对Assembly的经验很少,显然我在这里犯了一些错误,但是我找不到它。如何摆脱错误?

+0

我见过不同的汇编器有氖指令略有不同的助记符。如果“ld1.16b {v0},[x1]”不起作用,请尝试“ld1 {v0.16b},[x1]” – BitBank

回答

2

看起来就像那是一种令人毛骨悚然的苹果语法 - GCC使用的边长更细的architectural syntax,其中的大小说明符在每个寄存器参数上,而不是在指令本身上。

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

我不相信AArch64的binutils有任何的方式来支持苹果的语法,所以我认为可用的解决方案仅限于“向上手动修改代码”或“尝试锵/ LLVM代替”。

+0

是的,就是这样,永远不会注意到这一点。谢谢! – koldewb