首页/指令库/AES64密钥调度步骤2
AES64KS2

RISC-V AES64KS2 指令详解

指令手册R-type

AES 密钥调度步骤 2(RV64):按固定的两个 32 位 XOR 公式组合 rs1 和 rs2

指令语法

aes64ks2 rd, rs1, rs2
操作数说明
rd:写入 w1:w0,其中低 32 位是 w0、高 32 位是 w1。
rs1:只提供 rs1[63:32];rs1[31:0] 不参与该操作。
rs2:rs2[31:0] 与 rs1[63:32] 生成 w0,rs2[63:32] 再与 w0 异或生成 w1。
ZkndZkne加密与密码

指令行为说明

aes64ks2 是 Zknd/Zkne 共用的 RV64 AES 密钥调度指令。它先计算 w0 = rs1[63:32] XOR rs2[31:0],再计算 w1 = w0 XOR rs2[63:32],并把 w1:w0 写入 rd。

AES64KS2 指令解析与执行动画

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

aes64ks2
执行环境

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

fixed
source
source
fixed
destination
OP
31..25
0111111
24..20
rs2=x12
19..15
rs1=x11
14..12
000
11..7
rd=x10
6..0
0110011
执行数据路径
rs1[63:32]
0x11223344
w0
0xF4D4345C
w1
0x5566F788
当前步骤

解码固定字段和操作数

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

encoding: 0x7EC58533
syntax: aes64ks2 a0(x10), a1(x11), a2(x12)
架构可见结果
a0(x10) = 0x5566F788F4D4345C

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

快速理解与检索要点

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

RV64 指令,执行 AES 密钥调度中额外的 key word XOR 组合步骤。
标量密码指令使用整数 X 寄存器,官方要求相关密码指令以数据无关执行延迟实现。
aes64* 形式只在 RV64 上定义。

常见使用场景

加密与密码

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

密钥调度

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

使用前检查清单

语法检查
  • 确认 rd、rs1、rs2(及 rs3)是合法 GPR。
  • 确认 funct3 与 funct7 字段编码正确。
语义检查
  • 确认结果是否会影响后续分支或地址计算。
  • 确认 rd 寄存器不会被其他指令覆盖。

容易混淆 / 常见误区

仅适用于 RV64。
rs1 只读取高 32 位;rs2 的低、高 32 位分别参与 w0、w1。
rd 的低 32 位为 w0,高 32 位为 w1。

常见问题

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

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

AES64KS2 是完整算法实现吗?

不是。它只执行官方定义的 AES 密钥字 XOR 子步骤;软件仍需按算法顺序组合指令。