首页/指令库/AES64KS1I
AES64KS1I

RISC-V AES64KS1I 指令详解

指令手册R-type

AES密钥调度第一步(RV64):根据rcon轮常量对rs1执行SubWord+RotWord后写回rd

指令语法

aes64ks1i rd, rs1, rcon
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
ZkndZkne加密与密码

指令行为说明

aes64ks1i 是 Zknd/Zkne 共用的 AES 密钥调度指令(仅 RV64)。它接受 rs1 的前一个轮密钥状态(64 位)和一个 4 位立即数 rcon(轮常量),执行 AES 密钥调度中的 SubWord(对最高有效字应用 S-Box)和 RotWord(字内循环旋转),然后将结果与 rcon 异或后写入 rd。对于 AES-128,此指令单独完成一轮密钥扩展;对于 AES-192/256,需与 aes64ks2 配合。

快速理解与检索要点

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

RV64 指令,执行 AES 密钥调度中的旋转、SubBytes 和轮常数步骤;rnum 有效范围为 0x0..0xA,0xB..0xF 保留。
标量密码指令使用整数 X 寄存器,官方要求相关密码指令以数据无关执行延迟实现。
aes64* 形式只在 RV64 上定义。

常见使用场景

加密与密码

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

密钥调度

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

使用前检查清单

语法检查
  • 确认当前指令格式为 R-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

仅适用于 RV64。rcon 为 4 位立即数(轮常量)。
AES-128 每轮只需这一条指令;AES-192/256 需配合 aes64ks2。
密钥调度顺序必须与 AES 规定的轮常量序列一致(rcon[i] = {02}^{i-1})。

常见问题

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

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

AES64KS1I 是完整算法实现吗?

不是。它是 AES、SHA、SM3 或 SM4 中的一个低级步骤,软件仍需按算法顺序组合多条指令和轮常数/轮密钥。