首页/指令库/SHA-256 Σ1 变换
SHA256SUM1

RISC-V SHA256SUM1 指令详解

指令手册SHA2 OP-IMM fixed-selector fields

SHA-256 Σ1:ROTR32(x,6) ⊕ ROTR32(x,11) ⊕ ROTR32(x,25)

指令语法

sha256sum1 rd, rs1

语法为 sha256sum1 rd, rs1;只有两个整数寄存器操作数,选择 x0–x31 或 ABI 名称。

32 位 OP-IMM 编码:bits 31..20=000100000001、funct3=001、opcode=0010011;没有汇编立即数。

RV32/RV64 Zknh(也包含于 Zkn/Zk);只变换源低 32 位,RV64 将 32 位结果符号扩展到 64 位。

x0 源恒为 0,写入 x0 被丢弃;rd=rs1 时先读取原始源值。本指令必须具有数据无关执行延迟。

Zknh加密与密码

指令行为说明

sha256sum1 是 Zknh 扩展的 SHA-256 Σ1 变换:Σ1(x) = ROTR32(x,6) ⊕ ROTR32(x,11) ⊕ ROTR32(x,25)。在 RV32/RV64 定义,x = X(rs1)[31:0];RV64 忽略源高 32 位,并将 32 位结果符号扩展后写入 rd。这些变换也适用于 SHA2-224。循环右移限于输入字宽,>> 是补零的逻辑右移。

SHA256SUM1 指令解析与执行动画

受限教学输入直接执行官方 SHA-256 固定宽度位运算;不表示完整算法或微架构。

rd
rs1
sha256sum1
,

执行前 rd=rs1 时共用源值,否则演示初值 rd=0;rs1=x0 时始终读取 0。 SHA256SUM1 在 RV32/RV64 定义;RV64 仅取 X(rs1)[31:0],并将 32 位结果符号扩展到 XLEN。

fixed selector
source
fixed
destination
OP-IMM
31..20
000100000001
19..15
rs1=x11
14..12
001
11..7
rd=x10
6..0
0010011
执行数据路径
inb
0x89ABCDEF
ror32(inb, 6)
0xBE26AF37
ror32(inb, 11)
0xBDF13579
ror32(inb, 25)
0xD5E6F7C4
result
0xD6316D8A
架构可见结果
a0(x10) = 0x00000000

动画只展示官方 ISA 字段和架构状态;不表示完整哈希算法、流水线、缓存或时序实现。

快速理解与检索要点

sha256sum1 读取一个整数源寄存器,按固定公式计算 SHA-256 Σ1,再写入 rd。输入字和变换结果均为 32 位;RV64 忽略源高 32 位,并将结果符号扩展到 64 位。

32 位指令的 bits 31..20 固定为 000100000001(0x101),funct3=001,opcode=0010011;语法没有立即数。
x0 源恒为 0,rd=x0 丢弃写回;rd=rs1 时读取写回前的源值。
本指令必须具有数据无关执行延迟;动画步骤不代表处理器周期。

常见使用场景

SHA-256 Σ1 变换

RV32/RV64 Zknh,x11=1:sha256sum1 x10, x11 按本页固定公式得到 x10=0x04200080。RV64 将该 32 位结果符号扩展;本例最高位为 0。

使用前检查清单

语法检查
  • 语法为 sha256sum1 rd, rs1;只有两个整数寄存器操作数,选择 x0–x31 或 ABI 名称。
  • 32 位 OP-IMM 编码:bits 31..20=000100000001、funct3=001、opcode=0010011;没有汇编立即数。
语义检查
  • RV32/RV64 Zknh(也包含于 Zkn/Zk);只变换源低 32 位,RV64 将 32 位结果符号扩展到 64 位。
  • x0 源恒为 0,写入 x0 被丢弃;rd=rs1 时先读取原始源值。本指令必须具有数据无关执行延迟。

容易混淆 / 常见误区

σ0/σ1 与 Σ0/Σ1 是不同的固定公式,编号 0/1 不表示输入的低半部/高半部。
旋转在固定字宽内进行;有 >> 项时必须逻辑右移,不复制符号位。
RV64 结果是符号扩展,不是零扩展;源高 32 位不参与运算。

常见问题

SHA256SUM1 的寄存器宽度是什么?

sha256sum1 读取一个整数源寄存器,按固定公式计算 SHA-256 Σ1,再写入 rd。输入字和变换结果均为 32 位;RV64 忽略源高 32 位,并将结果符号扩展到 64 位。

固定选择子是立即数操作数吗?

不是。汇编语法是 sha256sum1 rd, rs1;bits 31..20 选择此变换,不能作为算术立即数修改或符号扩展。