结果是零扩展吗?
不是。低 32 位结果的 bit 31 总是复制到 bits 63..32,例如 0x80000000 得到 0xffffffff80000000。
将12位有符号立即数与rs1相加,取低32位结果并符号扩展至64位写入rd
ADDIW指令采用I型格式(opcode=0011011, funct3=000)。将12位立即数符号扩展后与rs1相加,忽略溢出,取结果低32位并符号扩展至64位写入rd。当立即数为0时等价于SEXT.W伪指令。ADDIW仅存在于RV64I中,RV32无此指令。
RV64I; XLEN=64; 32-bit result → sign extension
addiw rd, rs1, imm假设取指成功、无异步中断及额外扩展检查;同名寄存器共用一份初值。
0xFFF5851B解析当前指令字段并读取写回前源值;还没有提交结果。
这是架构效果的教学步骤,不代表处理器流水线或周期。
将12位有符号立即数与rs1相加,取低32位结果并符号扩展至64位写入rd
RV64I,x11=0x7fffffff:addiw x10, x11, 1 得到 0xffffffff80000000;不是 64 位加法。
RV64I,x11=0x7fffffff:addiw x10, x11, 1 得到 0xffffffff80000000;不是 64 位加法。
不是。低 32 位结果的 bit 31 总是复制到 bits 63..32,例如 0x80000000 得到 0xffffffff80000000。
将 rs1 的低 32 位符号扩展到 64 位,等效于 sext.w rd, rs1;它不保证保留 rs1 的原始高 32 位。