shamt=0 时发生什么?
这八个 C.SRAI 编码是指定给 custom use 的 HINT,不是普通的算术右移;HINT 除推进 PC 和适用性能计数器外不修改架构状态。
CB 格式:对 rd' 做算术右移并写回 rd'。
C.SRAI 使用 CB 格式,rd' 仅表示 x8-x15;它将 rd' 算术右移 shamt 位并写回,展开为 srai rd', rd', shamt。RV32C 中 shamt[5] 必须为 0;shamt=0 的八个编码是指定给 custom use 的 HINT,而不是普通 C.SRAI。
只展示官方定义的 16 位字段、操作数、条件和架构状态;不模拟流水线、缓存或时序。
C.SRAI 将 rd' 作为同一读写寄存器;算术右移用原始符号位填充空出的高位。
结合 «c.srai x8, 2 # x8 >>= 2 (arithmetic)» 等实际代码理解该场景。
这八个 C.SRAI 编码是指定给 custom use 的 HINT,不是普通的算术右移;HINT 除推进 PC 和适用性能计数器外不修改架构状态。
RV32C 要求 shamt[5]=0,shamt[5]=1 的编码指定给 custom extensions;RV64C 使用完整的 6 位 shamt 字段。