首页/指令库/SHA-512 σ1 变换
SHA512SIG1

RISC-V SHA512SIG1 指令详解

指令手册I-type

SHA-512 σ1函数(RV64):ROTR(rs1,19) ⊕ ROTR(rs1,61) ⊕ SHR(rs1,6)

指令语法

sha512sig1 rd, rs1

语法为 sha512sig1 rd, rs1;操作数选择整数 x0–x31 或 ABI 名称,没有汇编立即数。

32 位 OP-IMM:bits31..20=000100000111,funct3=001,opcode=0010011;固定选择子不是第二操作数。

仅 RV64 Zknh(也包含于 Zkn/Zk);σ1 对完整 64 位源执行循环右移 19、61 位及逻辑右移 6 位,再异或。

x0 源恒为 0,写入 x0 被丢弃;重叠操作数读取写回前的源值。同名源只有一个值。指令执行延迟必须与操作数据无关。

Zknh加密与密码

指令行为说明

sha512sig1 是 Zknh 的 RV64 指令:σ1(x) = ROTR64(x,19) ⊕ ROTR64(x,61) ⊕ (x >> 6)。输入 x 为完整 64 位 X(rs1),64 位结果写入 rd。循环右移在 64 位内进行,>> 是补零逻辑右移。RV32 的完整变换使用 sha512sig1l/sha512sig1h 序列。

SHA512SIG1 指令解析与执行动画

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

rd
rs1
sha512sig1
,

执行前 rd=rs1 时共用源值,否则演示初值 rd=0;rs1=x0 时始终读取 0。 SHA512SIG1 仅在 RV64 定义,并对完整 64 位 X(rs1) 计算。

fixed selector
source
fixed
destination
OP-IMM
31..20
000100000111
19..15
rs1=x11
14..12
001
11..7
rd=x10
6..0
0010011
执行数据路径
inb
0x0123456789ABCDEF
ror64(inb, 19)
0x79BDE02468ACF135
ror64(inb, 61)
0x091A2B3C4D5E6F78
inb >> 6
0x00048D159E26AF37
result
0x70A3460DBBD4317A
架构可见结果
a0(x10) = 0x0000000000000000

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

快速理解与检索要点

SHA-512 σ1函数(RV64):ROTR(rs1,19) ⊕ ROTR(rs1,61) ⊕ SHR(rs1,6)

sha512sig1 使用整数 X 寄存器,XLEN=64。
指令执行延迟必须与被处理的数据无关;这不规定具体周期数。
写入 x0 的结果被丢弃;源值在本条指令写回前读取。

常见使用场景

SHA-512 哈希变换

RV64 Zknh,a1=1:两项 64 位循环右移分别为 0x0000200000000000 和 0x0000000000000008,逻辑右移项为 0,故 a0=0x0000200000000008。

整数寄存器位运算

RV64 Zknh,a1=1:两项 64 位循环右移分别为 0x0000200000000000 和 0x0000000000000008,逻辑右移项为 0,故 a0=0x0000200000000008。

使用前检查清单

语法检查
  • 语法为 sha512sig1 rd, rs1;操作数选择整数 x0–x31 或 ABI 名称,没有汇编立即数。
  • 32 位 OP-IMM:bits31..20=000100000111,funct3=001,opcode=0010011;固定选择子不是第二操作数。
语义检查
  • 仅 RV64 Zknh(也包含于 Zkn/Zk);σ1 对完整 64 位源执行循环右移 19、61 位及逻辑右移 6 位,再异或。
  • x0 源恒为 0,写入 x0 被丢弃;重叠操作数读取写回前的源值。同名源只有一个值。指令执行延迟必须与操作数据无关。

容易混淆 / 常见误区

仅在 RV64 定义;RV32 使用 sha512sig1l/sha512sig1h 拆分形式。
循环右移为 64 位旋转;右移 6 位是补零移位,不是算术右移。

常见问题

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

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

SHA512SIG1 是完整算法实现吗?

它只计算 SHA-512 σ1 的一次 64 位变换,不是完整 SHA-512 算法。