SLLI.UW

RISC-V SLLI.UW 指令详解

指令手册I-type

无符号字左移立即数(RV64)

指令语法

slli.uw rd, rs1, shamt
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数所在的寄存器。
立即数 imm:12 位有符号立即数,符号扩展后与 rs1 进行运算。
BZba地址生成

指令行为说明

将rs1的低32位零扩展后逻辑左移shamt位(0-63)。等价于先做add.uw后做slli。属于Zba。

快速理解与检索要点

SLLI.UW 是 B/Zba 指令,低 32 位零扩展后立即数左移。页面内容按官方 B 扩展语义校对,重点区分 XLEN、W 后缀、.uw 后缀和按位/循环操作的边界。

先提取并零扩展 rs1 的低 32 位,再按立即数逻辑左移。
它是 RV64 Zba 指令,适合无符号 32 位索引扩展;不要把它等同于先符号扩展再左移。

常见使用场景

寄存器操作

结合 «slli.uw x10, x11, 4 ; x10 = zero_ext(x11[31:0]) << 4» 等实际代码理解该场景。

类型转换

结合 «slli.uw x10, x11, 4 ; x10 = zero_ext(x11[31:0]) << 4» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 I-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

仅适用于RV64
shamt范围0-63

常见问题

SLLI.UW 会访问内存吗?

不会。它只读写整数寄存器;任何内存访问都必须由单独的 load/store 指令完成。

SLLI.UW 的结果宽度是什么?

除 W 后缀先形成 32 位结果再符号扩展、.uw 先提取 32 位无符号操作数外,结果按 XLEN 写入 rd。