c.addw 为什么有寄存器限制?
多数 C 扩展格式用较短字段编码寄存器,因此部分形式只能访问 x8..x15 或固定寄存器。
32位加法再符号扩展至64位。CA格式,RV64C。
rd′ 选择 x8–x15,既是旧源又是写回目标;读取旧值后写回。
rs2′ 也选择 x8–x15;同名源具有同一旧值。
RV64C:保留加法低32位,再符号扩展到64位;不是完整64位加法结果。
RV64C 的 16 位 CA 格式:将 x[rd'] 与 x[rs2'] 相加,保留低 32 位后符号扩展到 64 位并写回 rd';两个寄存器均为 x8–x15。
只展示手册定义的 16 位字段、操作数和 ISA 可见结果;不模拟流水线、缓存、时序或实现的内存异常处理。
适用:RV64C,16 位 CA 编码。
rd'=000 -> x8; rs2'=001 -> x9
RV64C 的 16 位 CA 格式:将 x[rd'] 与 x[rs2'] 相加,保留低 32 位后符号扩展到 64 位并写回 rd';两个寄存器均为 x8–x15。
RV64C,旧 x8=0x7fffffff、x9=1:c.addw x8, x9 的低32位和为0x80000000,写 x8=0xffffffff80000000。
多数 C 扩展格式用较短字段编码寄存器,因此部分形式只能访问 x8..x15 或固定寄存器。
不是。它是 C 扩展定义的 16 位编码指令。