zext.w

RISC-V zext.w 伪指令详解

汇编器伪指令

RISC-V zext.w 伪指令按RISC-V Assembly Programmer's Manual展开为 slli rd, rs, XLEN - 32 后接 srli rd, rd, XLEN - 32,以零扩展字。在 RV64 且 Zba 可用时,表中有单指令形式。

你写下的是
zext.w rd, rs
常见真实展开
slli rd, rs, XLEN - 32 srli rd, rd, XLEN - 32

这条伪指令到底在帮你省什么

RISC-V Assembly Programmer's Manual为该两条移位序列提供 zext.w 的零扩展字拼写。

RISC-V zext.w 伪指令使用 SLLI/SRLI 序列零扩展低 32 位;在 RV64 且 Zba 可用时,ADD.UW 提供单指令形式。

官方语义核对重点

RISC-V Assembly Programmer's Manual 列出 zext.w rd, rs 的 SLLI/SRLI 展开,并注明 Zba 可用时为单指令。
非特权 ISA 第 2.4.1 节规定 SLLI 逻辑左移时低位补零,SRLI 逻辑右移时高位补零。
非特权 ISA 的 Zba 表将 ADD.UW 列为 RV64,且第 30.9.1 节将 zext.w rd, rs1 列为 add.uw rd, rs1, zero。

可用性与扩展条件

基础条件
  • SLLI/SRLI 两条移位
单指令/标准写法条件
  • RV64 且 Zba 可用时,ADD.UW 提供单指令形式。
回退/边界
使用表中列出的 SLLI/SRLI 序列。
备注
  • 零扩展低 32 位。

展开过程怎么理解

步骤 1
SLLI 逻辑左移,低位补零。
步骤 2
SRLI 逻辑右移,高位补零。

官方依据与阅读顺序

本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。

什么时候优先想到它

使用 zext.w 表示表中列出的低 32 位零扩展操作。

容易混淆 / 常见误区

基础展开由两条移位组成;单指令形式需要 RV64 和 Zba。
表中的移位量为 XLEN - 32;在 RV64 中为 32。

常见问题

zext.w 的基础展开是什么?

RISC-V Assembly Programmer's Manual列出 slli rd, rs, XLEN - 32 后接 srli rd, rd, XLEN - 32。