SM4ED 使用浮点或向量寄存器吗?
不使用。标量密码扩展的这些指令使用整数 X 寄存器。
SM4 加解密字节步骤:从 rs2[31:0] 按 bs 选字节,经 S-Box/线性层和旋转后与 rs1[31:0] 异或
rd、rs1、rs2 为整数 x0–x31 或 ABI 名称;bs 为 0–3 的 2 位字节选择子。
32 位 OP:bits31:30=bs,bits29:25=11000,funct3=000,opcode=0110011。
RV32/RV64 Zksed;从 rs2[31:0] 选择字节 bs,经 SM4 S-box 和数据轮线性层,循环左移 bs*8 位后异或 rs1[31:0];RV64 将结果符号扩展。
x0 源恒为零,写 x0 被丢弃;重叠操作数读取写回前的值。指令执行延迟必须与操作数据无关。
sm4ed 是 Zksed 扩展的 SM4 加解密轮函数加速指令,适用于 RV32 和 RV64。它从 rs2[31:0] 中按 bs 选择一个字节,应用 SM4 S-Box 和数据轮函数线性层,将结果旋转到 bs 对应字节位置后与 rs1[31:0] 异或并写入 rd;在 RV64 上 32 位结果符号扩展到 XLEN。
受限教学模型只展示官方 ISA 可见字段、状态与条件,不模拟完整密码协议或微架构。
执行环境:RV32/RV64;教学数据固定为两个低 32 位源均为 0。
sb_in=0x00 -> sbox=0xD6 -> y=0x5B5BD58E -> z=0x5B5BD58E
SM4ED 从 rs2 选择一个字节,经 S-box、数据线性层与循环左移后与 rs1 的低 32 位异或。它是 SM4 轮函数的字节步骤。
RV32/RV64 Zksed,a1=a2=0、bs=0:S-box(0)=0xD6,按本页线性层得到 a0=0x5B5BD58E;RV64 符号扩展。
RV32/RV64 Zksed,a1=a2=0、bs=0:S-box(0)=0xD6,按本页线性层得到 a0=0x5B5BD58E;RV64 符号扩展。
不使用。标量密码扩展的这些指令使用整数 X 寄存器。
不是。它只定义 SM4 加/解密轮函数中的一个字节操作。