C.SH 存储源寄存器的哪些位?
它将 rs2' 的最低 16 位写到内存;rs2' 的高位不参与存储值。
16位编码的sh指令,存储低16位
扩展条件:RV32/RV64 的 Zcb,依赖 Zca;不额外要求 Zbb。
C.SH 使用 Zcb 的 CSH 格式,将 rs2' 的低 16 位存到 rs1' 加零扩展 uimm 的地址。rs1' 和 rs2' 都表示 x8-x15;uimm[1] 来自编码 bit 5,uimm[0] 固定为 0,因此偏移只能为 0 或 2。
只展示官方定义的 16 位字段、操作数、条件和架构状态;不模拟流水线、缓存或时序。
RV32/RV64 Zcb + Zca
自然对齐访问不得产生地址未对齐异常;任何地址仍可能因 EEI 定义的访问权限而产生访问错误。
C.SH 将紧凑 rs1′/rs2′ 映射到 x8–x15,重组0或2字节的偏移;访问成功时存储 rs2′ 的低16位。
RV32/RV64 Zcb+Zca,x10=0x2000、x9=0x1234abcd:c.sh x9, 2(x10) 成功时写mem16[0x2002]=0xabcd。
它将 rs2' 的最低 16 位写到内存;rs2' 的高位不参与存储值。
uimm[1] 来自编码 bit 5 且 uimm[0] 固定为零,因此零扩展偏移只能是 0 或 2 字节。