SHA512SIG1 使用浮点或向量寄存器吗?
不使用。标量密码扩展的这些指令使用整数 X 寄存器。
SHA-512 σ1函数(RV64):ROTR(rs1,19) ⊕ ROTR(rs1,61) ⊕ SHR(rs1,6)
语法为 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 被丢弃;重叠操作数读取写回前的源值。同名源只有一个值。指令执行延迟必须与操作数据无关。
sha512sig1 是 Zknh 的 RV64 指令:σ1(x) = ROTR64(x,19) ⊕ ROTR64(x,61) ⊕ (x >> 6)。输入 x 为完整 64 位 X(rs1),64 位结果写入 rd。循环右移在 64 位内进行,>> 是补零逻辑右移。RV32 的完整变换使用 sha512sig1l/sha512sig1h 序列。
受限教学输入直接执行官方 SHA-512 固定宽度位运算;不表示完整算法或微架构。
执行前 rd=rs1 时共用源值,否则演示初值 rd=0;rs1=x0 时始终读取 0。 SHA512SIG1 仅在 RV64 定义,并对完整 64 位 X(rs1) 计算。
动画只展示官方 ISA 字段和架构状态;不表示完整哈希算法、流水线、缓存或时序实现。
SHA-512 σ1函数(RV64):ROTR(rs1,19) ⊕ ROTR(rs1,61) ⊕ SHR(rs1,6)
RV64 Zknh,a1=1:两项 64 位循环右移分别为 0x0000200000000000 和 0x0000000000000008,逻辑右移项为 0,故 a0=0x0000200000000008。
RV64 Zknh,a1=1:两项 64 位循环右移分别为 0x0000200000000000 和 0x0000000000000008,逻辑右移项为 0,故 a0=0x0000200000000008。
不使用。标量密码扩展的这些指令使用整数 X 寄存器。
它只计算 SHA-512 σ1 的一次 64 位变换,不是完整 SHA-512 算法。