【问题标题】:ARM assembly cryptography extensionsARM 程序集加密扩展
【发布时间】:2021-08-04 18:03:29
【问题描述】:

我正在 ARM 程序集中实现 AES-ECB 编码/解码。我正在使用 Jetson Nano,它使用 ARM Cortex A57,它在硬件上具有加密扩展。我遇到的问题是,每当我尝试汇编代码时,汇编器都会输出以下内容。

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

【问题讨论】:

    标签: assembly arm aes arm64


    【解决方案1】:

    .arch armv8-a 告诉汇编器只接受基本的 ARMv8-A 指令。加密指令不在基本指令集中,所以如果你想使用这个扩展,你必须告诉汇编程序。试试.arch armv8-a+crypto

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

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

    【讨论】:

    • OP 可能还想考虑一个.cpu 指令。但是,是的,不告诉汇编器要组装什么 CPU 绝对是问题所在。
    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    相关资源
    最近更新 更多