ZIP 是否访问内存?
不访问。ZIP 只把源整数寄存器的两个半字交错到目标整数寄存器。
RV32 位交错(Zbkb),仅 RV32 定义。
语法为 zip rd, rs1;操作数为整数 x0–x31 或 ABI 名称,没有汇编立即数。
32 位 OP-IMM:imm[11:0]=000010001111、funct3=001、opcode=0010011;立即数字段是固定选择子。
仅 RV32 Zbkb;低半源位写偶数结果位,高半写奇数结果位,是 UNZIP 的逆操作。
x0 源恒为零,写入 x0 被丢弃;重叠源/目标读取写回前的值,同名源只有一个值。不访问内存。
ZIP(Zbkb,RV32-only)把源寄存器低 16 位和高 16 位交错到目标寄存器:对 i=0..15,rd[2*i]=rs1[i],rd[2*i+1]=rs1[i+16]。它是 UNZIP 的逆操作,常用于 32 位架构上的 SHA3 位交错优化。
RV32 将 rs1 的低半和高半分别交错到 rd 的偶数位与奇数位。
x0 恒为零;源值在写回前读取。教学步骤不表示处理器周期。
00001000111101011001010100010011rd[2i] = rs1[i]; rd[2i+1] = rs1[i+16], i = 0..15
0xD2C4B8A1 -> 0xE748E421
显示当前指令的固定字段和寄存器字段。
ZIP 是 Zbkb 的 RV32 位交错指令:源低 16 位写到偶数位,源高 16 位写到奇数位。
RV32 Zbkb,x11=0x00010001:zip x10, x11 得到 x10=0x00000003。
RV32 Zbkb,x11=0x00010001:zip x10, x11 得到 x10=0x00000003。
不访问。ZIP 只把源整数寄存器的两个半字交错到目标整数寄存器。
它属于 Zbkb 密码位操作扩展。