C.ADDI 的立即数范围是多少?
CI 格式把 imm[5] 和 imm[4:0] 组成 6 位有符号立即数,因此可表示 -32 到 31;常规 C.ADDI 不使用 0。
常规 C.ADDI 将非零有符号 6 位立即数加到非零 rd:rd += imm。CI 格式。
扩展条件:RV32I/RV64I 的 C 扩展(或 Zca);16 位编码,IALIGN=16。动画按取指成功且无异步中断的条件展示架构效果。
常规 C.ADDI 使用 CI 格式,将非零的 6 位符号扩展立即数加到非零 rd 并写回 rd;它展开为 addi rd, rd, imm。rd 非零而 imm=0 的编码是 HINT。rd=x0、imm=0 是 C.NOP;C.NOP 的 imm 非零编码也是 HINT。
RV32I/RV64I + C(或 Zca),16 位编码,IALIGN=16。
c.addi rd, imm0x156D = 0001010101101101还原完整寄存器字段和立即数,并区分普通指令、HINT 与共享编码。
这是架构效果的教学步骤,不代表处理器流水线或周期。
C.ADDI 用 16 位 CI 编码实现 rd 自身加一个 6 位有符号立即数;常规指令形式排除 rd=x0 和 imm=0。
RV32I/RV64I + C/Zca,旧 x10=12 时,c.addi x10, -5 得到 x10=7;立即数符号扩展,成功后 PC+2。
RV32I/RV64I + C/Zca,旧 x10=12 时,c.addi x10, -5 得到 x10=7;立即数符号扩展,成功后 PC+2。
CI 格式把 imm[5] 和 imm[4:0] 组成 6 位有符号立即数,因此可表示 -32 到 31;常规 C.ADDI 不使用 0。