结果是零扩展吗?
不是。低 32 位结果的 bit 31 总是复制到 bits 63..32,例如 0x80000000 得到 0xffffffff80000000。
ADDW指令采用R型格式(opcode=0111011, funct7=0000000, funct3=000)。将寄存器rs1和rs2的低32位相加,忽略溢出,取低32位结果并符号扩展至64位后写入rd。与 RV64I 中的 ADD(64 位全宽运算)不同,ADDW 只操作低 32 位并将结果符号扩展。
RV64I; XLEN=64; 32-bit result → sign extension
addw rd, rs1, rs2假设取指成功、无异步中断及额外扩展检查;同名寄存器共用一份初值。
0x00C5853B解析当前指令字段并读取写回前源值;还没有提交结果。
这是架构效果的教学步骤,不代表处理器流水线或周期。
将rs1和rs2的低32位相加,结果截断为32位符号扩展至64位写入rd
RV64I,x11=0x7fffffff、x12=1:addw x10, x11, x12 得到 0xffffffff80000000。
RV64I,x11=0x7fffffff、x12=1:addw x10, x11, x12 得到 0xffffffff80000000。
不是。低 32 位结果的 bit 31 总是复制到 bits 63..32,例如 0x80000000 得到 0xffffffff80000000。