Gcc 程序集未知助记符AArch64 ARMv8

Gcc 程序集未知助记符AArch64 ARMv8,gcc,assembly,cross-compiling,arm64,Gcc,Assembly,Cross Compiling,Arm64,我正在尝试编译一个项目(来自GitHub:),其中包含两个为ARMv8 AArch64体系结构编写的程序集文件。当我试图编译这些文件时,几乎每一行都会出现相同的错误,首先是: authenc_ac_gcm_low.S:汇编程序消息: 代码的一小部分:(第78行到第87行) 我正在使用用于AArch64的Linaro交叉编译器,为了进行编译,我使用了-mcpu=cortex-a53+加密标志;不这样做会导致“无此类指令”错误。 我在组装方面经验很少,显然我在这里犯了一些错误,但我找不到。如何消除错

我正在尝试编译一个项目(来自GitHub:),其中包含两个为ARMv8 AArch64体系结构编写的程序集文件。当我试图编译这些文件时,几乎每一行都会出现相同的错误,首先是:

authenc_ac_gcm_low.S:汇编程序消息:

代码的一小部分:(第78行到第87行)

我正在使用用于AArch64的Linaro交叉编译器,为了进行编译,我使用了-mcpu=cortex-a53+加密标志;不这样做会导致“无此类指令”错误。
我在组装方面经验很少,显然我在这里犯了一些错误,但我找不到。如何消除错误?

看起来这是不可靠的Apple语法-GCC使用了稍微更详细的语法,其中大小说明符位于每个寄存器参数上,而不是指令本身,例如

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

我不相信AArch64 binutils有任何方法支持Apple语法,因此我认为可用的解决方案仅限于“手动修复代码”或“改为使用Clang/LLVM”。

我看到不同的汇编程序对neon指令的助记符略有不同。如果“ld1.16b{v0},[x1]”不起作用,请尝试“ld1{v0.16b},[x1]”是的,就是这样,永远不会注意到这一点。谢谢
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
ld1 {v0.16b}, [x1]
rbit v0.16b, v0.16b
st1 {v0.16b}, [x0]