add.uw 和 addw 有什么区别?
add.uw 零扩展 rs1 的低 32 位后与 rs2 做 XLEN 加法;addw 做 32 位加法并把 bit31 符号扩展到 XLEN。
无符号字加法(RV64),将rs1的低32位零扩展后与rs2相加
rd、rs1 选择 x0–x31;源读取写回前的值,写入 x0 被丢弃。
rs1 仅取低 32 位并零扩展;rs2 使用完整 64 位。
要求 RV64 Zba;保留加法结果低 64 位,不做字结果符号扩展。
RV64 Zba:将 rs1[31:0] 零扩展后与 rs2 做 64 位加法,结果写入 rd。
从机器码字段解析开始,依次展示操作数读取、该指令专属语义计算和 ISA 可见状态更新。
本例使用固定寄存器初值和初始 PC=0x2000;取指成功,没有异步中断或额外扩展检查。异常分支只显示普通提交停止,陷入后的 PC 和处理程序状态由 EEI 决定。
机器码按当前指令格式切成字段,动画从 encoding/decode 开始。
该动画展示 ISA 可见的解码和状态变化,不表示任何特定 CPU 的流水线、缓存、预测或时序实现。
add.uw 常用于 RV64 地址生成:先把 rs1[31:0] 零扩展,再与 rs2 相加。
RV64 Zba,x11=0xffffffff80000000、x12=1:零扩展 x11 低 32 位后相加,x10=0x0000000080000001。
RV64 Zba,x11=0xffffffff80000000、x12=1:零扩展 x11 低 32 位后相加,x10=0x0000000080000001。
add.uw 零扩展 rs1 的低 32 位后与 rs2 做 XLEN 加法;addw 做 32 位加法并把 bit31 符号扩展到 XLEN。