ZEXT.H 会访问内存吗?
不会。它只读写整数寄存器;任何内存访问都必须由单独的 load/store 指令完成。
半字零扩展
ZEXT-H 在 RV32 使用 opcode 0110011(0x33),在 RV64 使用 opcode 0111011(0x3b)、funct3 100、funct7 0000100、rs2 0。rs1 和 rs2 字段选择两个源寄存器,rd 字段选择目标寄存器。
将 rs 的最低 16 位零扩展到 XLEN 位。该指令属于 Zbb,并在 RV32 与 RV64 使用不同的编码。
从机器码字段解析开始,依次展示操作数读取、该指令专属语义计算和 ISA 可见状态更新。
机器码按当前指令格式切成字段,动画从 encoding/decode 开始。
该动画展示 ISA 可见的解码和状态变化,不表示任何特定 CPU 的流水线、缓存、预测或时序实现。
ZEXT.H 是 Zbb 指令:读取 rs 的低 16 位,并将其零扩展到 XLEN。RV32 与 RV64 使用不同编码。
结合 «zext.h x10, x11 ; x10 = zero_ext(x11[15:0])» 等实际代码理解该场景。
结合 «zext.h x10, x11 ; x10 = zero_ext(x11[15:0])» 等实际代码理解该场景。
不会。它只读写整数寄存器;任何内存访问都必须由单独的 load/store 指令完成。
结果按当前 XLEN 写入 rd:RV32 为 32 位,RV64 为 64 位;两者的高于 bit 15 的位都为零。