c.subw 为什么有寄存器限制?
多数 C 扩展格式用较短字段编码寄存器,因此部分形式只能访问 x8..x15 或固定寄存器。
RV64C 的 16 位 CA 减法:rd'−rs2' 的低 32 位符号扩展到 64 位,写回 rd'。
RV64 C 2.0/Zca;16 位 CA 格式,funct6=100111、funct2=00、op=01。
rd'/rs1' 和 rs2' 的三位字段 000–111 分别选择 x8–x15;rd' 同时是旧值源和目的。
先取旧 x[rd']−旧 x[rs2'] 的低 32 位,再将 bit31 符号扩展到 64 位写回 rd';同名源必须是同一个旧值。RV32 中此编码保留。
c.subw 是 RV64C 的 CA 格式指令,对 rd' - rs2' 做 32 位减法,并把 bit31 符号扩展到 XLEN 后写回 rd'。
仅展示手册定义的压缩字段、操作数和架构可见状态;不表示流水线、缓存或时序。
rd'/rs1'=000 -> x8; rs2'=001 -> x9
c.subw 是 RV64C 的 CA 格式指令,对 rd' - rs2' 做 32 位减法,并把 bit31 符号扩展到 XLEN 后写回 rd'。
RV64 C/Zca,旧 x8=0、x9=1:c.subw x8, x9 的低32位差值为0xffffffff,符号扩展后 x8=0xffffffffffffffff。
多数 C 扩展格式用较短字段编码寄存器,因此部分形式只能访问 x8..x15 或固定寄存器。
不是。它是 C 扩展定义的 16 位编码指令。