ARM 程序集加密扩展

ARM assembly cryptography extensions

我正在 ARM 汇编中实现 AES-ECB encode/decode。我正在使用 Jetson Nano,它使用 ARM Cortex A57,它在硬件上有加密扩展。我 运行 遇到的问题是每当我尝试 assemble 我的代码时, assembler 输出以下内容。

aes.asm: Assembler messages:
aes.asm:14: Error: selected processor does not support `aese V0.16b,V0.16b'

根据文档,这个 CPU 应该支持这些说明,我不确定我遗漏了什么。

.section .text
.global _start
.arch armv8-a

_start:
        mov x8, 64
        mov x0, 1
        ldr x1, =str
        mov x2, str_len
        svc 0

        ldr x0, =a
        ldp q0, q1, [x0]
        aese V0.16b, V0.16b

        mov x8, 0x5D
        mov x0, 0x45
        svc 0


.section .data
str: .ascii "starting\n"
str_len = .-str

.balign 1
a: .skip 16
a_len = .-a

b: .single 3.4, 2.5, 4.4, 6.6, 7.7, 8.8
b_size = .-b

.arch armv8-a 告诉汇编器只接受基本的 ARMv8-A 指令。加密指令不在基本指令集中,因此您必须告诉汇编程序是否要使用此扩展。试试 .arch armv8-a+crypto.

请记住,汇编器不知道目标机器支持哪些扩展,除非您告诉它。

有关 -march 命令行选项和 .arch 指令接受的所有体系结构,请参阅 https://sourceware.org/binutils/docs/as/ARM-Options.html#ARM-Options