SRLI 的移位量来自哪里?
立即数版本的移位量来自 shamt 字段;RV32I 中是 5 位。
将rs1逻辑右移shamt位(高位补零),结果写入rd
SRLI 使用 opcode 0010011(0x13)、funct3 101、funct7 0000000。rs1 字段选择源寄存器,12 位立即数提供第二操作数,rd 选择目标寄存器。
SRLI指令属于I型格式的特化子类(opcode=0010011, funct3=101, funct7=0000000)。rs1按移位量shamt(立即数字段低5位)进行逻辑右移,高位补零,低位丢弃,结果写入rd。对于RV32I,funct7的bit30=0(6位funct7编码为0000000),与SRAI的区别即bit30的值。
SRLI 执行立即数逻辑右移,高位补 0,结果写入 rd。移位量来自 shamt 立即数字段。
结合 «srli x5, x6, 2 # x5 = x6 >> 2 (unsigned divide by 4)» 等实际代码理解该场景。
结合 «srli x5, x6, 2 # x5 = x6 >> 2 (unsigned divide by 4)» 等实际代码理解该场景。
结合 «srli x5, x6, 2 # x5 = x6 >> 2 (unsigned divide by 4)» 等实际代码理解该场景。
立即数版本的移位量来自 shamt 字段;RV32I 中是 5 位。
逻辑右移高位补 0;算术右移高位复制原符号位,通常用于保持有符号数的符号。