首页/指令库/AES64列混合
AES64IM

RISC-V AES64IM 指令详解

指令手册I-type

对rs1的64位半块执行AES InvMixColumns变换(用于等效逆密钥调度)

指令语法

aes64im rd, rs1
操作数说明
rd:接收两个 InvMixColumns 结果打包成的 64 位值。
rs1:一个寄存器打包两个 32 位 AES 状态列;低 32 位和高 32 位各自进入 InvMixColumns。
bits 31..20 固定为 001100000000;这是编码常量,不是汇编语法中的立即数,也不会作为 12 位有符号值扩展。
Zknd加密与密码

指令行为说明

aes64im 是 Zknd 扩展的辅助指令(仅 RV64)。它对一个 64 位寄存器中打包的两个状态列执行 AES 逆 MixColumns(InvMixColumns)变换,结果写入 rd。该指令用于按等价逆密码构造创建解密密钥调度;它不执行 SBox 或轮密钥异或。

AES64IM 指令解析与执行动画

受限教学输入直接按本地官方手册的 ISA 公式计算;不表示完整 AES 算法或微架构。

aes64im
执行环境

XLEN 固定为 64;该 AES64 形式不在 RV32 定义。

fixed
fixed x0
source
fixed
destination
OP-IMM
31..25
0011000
24..20
00000
19..15
rs1=x11
14..12
001
11..7
rd=x10
6..0
0010011
执行数据路径
rs1[63:32]
0x11223344
rs1[31:0]
0x55667788
InvMixColumns high:low
0x6195CB7B:0x8A632B0E
当前步骤

解码固定字段和操作数

AES64IM 仅在 RV64 定义;固定字段、整数寄存器字段和 OP/OP-IMM 主操作码共同识别该编码。

encoding: 0x30059513
syntax: aes64im a0(x10), a1(x11)
架构可见结果
a0(x10) = 0x6195CB7B8A632B0E

动画只展示官方 ISA 字段和架构状态,不表示特定 CPU 的流水线、缓存或时序实现。

快速理解与检索要点

AES64IM 是 Zknd 标量密码指令,AES 逆 MixColumns 密钥调度步骤。页面内容按官方标量密码扩展校对,避免把算法轮函数、密钥调度和寄存器来源混淆。

RV64 指令,对一个 64 位寄存器中打包的两个 AES 列应用 InvMixColumns,用于等价逆密码密钥调度。
标量密码指令使用整数 X 寄存器,官方要求相关密码指令以数据无关执行延迟实现。
aes64* 形式只在 RV64 上定义。

常见使用场景

加密与密码

结合 «aes64im a0, a1» 等实际代码理解该场景。

密钥调度

结合 «aes64im a0, a1» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认立即数字段在有效范围内。
  • 确认源寄存器 rs1 指向正确的操作数。
语义检查
  • 确认立即数符号扩展是否符合预期。
  • 确认结果寄存器 rd 的用途是否明确。

容易混淆 / 常见误区

仅适用于 RV64。
仅执行 InvMixColumns,不涉及 S-Box 或轮密钥异或。
用于等效逆密钥调度的派生,而非数据解密本身。

常见问题

AES64IM 使用浮点或向量寄存器吗?

不使用。标量密码扩展的这些指令使用整数 X 寄存器。

AES64IM 是完整算法实现吗?

不是。它只执行官方定义的两个 AES 状态列的 InvMixColumns 步骤;软件仍需构建完整密钥调度。