C.MV 和 MV 的展开相同吗?
不相同。C.MV 展开为 add rd, x0, rs2;规范 MV 伪指令展开为 addi rd, rs, 0。两者都复制寄存器值。
16 位寄存器复制:普通形式将非零 rs2 的完整 XLEN 位值写入非零 rd。
C.MV 是 16 位 CR 格式指令,使用完整 5 位 rd 和 rs2 字段,将 rs2 的 XLEN 位值复制到 rd,展开为 add rd, x0, rs2。普通形式要求 rd≠x0 且 rs2≠x0。rs2=x0、rd≠x0 的编码是 C.JR;二者均为 x0 的编码保留。rd=x0 且 rs2≠x0 是 HINT。C.MV 可用于 RV32I/RV64I 加 C 或 Zca。
RV32I/RV64I + C(或 Zca);16 位,IALIGN=16。
c.mv rd, rs2假设取指成功、无异步中断及额外扩展检查;同名寄存器共用一份初值。
0x852E还原完整寄存器字段或固定操作数;先区分普通编码、HINT 和保留编码。
这是架构效果的教学步骤,不代表处理器流水线或周期。
16 位寄存器复制:普通形式将非零 rs2 的完整 XLEN 位值写入非零 rd。
RV32I/RV64I + C/Zca,x11=9:c.mv x10, x11 得到 x10=9,成功后 PC+2;旧 x10 不参与计算。
不相同。C.MV 展开为 add rd, x0, rs2;规范 MV 伪指令展开为 addi rd, rs, 0。两者都复制寄存器值。
可以。非零 rd=rs2 时读取同一个旧值并写回,寄存器位模式不变。