RV32 Zclsd 与 RV64C 的源寄存器有什么不同?
RV64C 从 rs2 取 64 位。RV32 Zclsd 要求 rs2 为偶数,并将 rs2 的低 32 位和 rs2+1 的高 32 位组成 64 位值。
RV64C:从 rs2 压缩存储 64 位双字;RV32 Zclsd:从偶数 rs2/rs2+1 寄存器对存储 64 位值。
C.SDSP 使用 CSS 格式。RV64C 将 rs2 的 64 位值存到 x2/sp 加零扩展、按 8 缩放的偏移地址;RV32 Zclsd 则由偶数 rs2 与 rs2+1 组成 64 位源值。两种形式的有效地址均为 x2 加偏移。
只展示官方定义的 16 位字段、操作数、条件和架构状态;不模拟流水线、缓存或时序。
自然对齐访问不得产生地址未对齐异常;任何地址仍可能因 EEI 定义的访问权限而产生访问错误。
C.SDSP 的基址固定为 x2/sp;CSS 偏移由编码位重组并按 8 缩放。RV64C 与 RV32 Zclsd 的源寄存器模型不同。
结合 «c.sdsp x10, 16(sp) # *(sp+16) = x10» 等实际代码理解该场景。
RV64C 从 rs2 取 64 位。RV32 Zclsd 要求 rs2 为偶数,并将 rs2 的低 32 位和 rs2+1 的高 32 位组成 64 位值。
地址为 8 字节倍数时不得产生地址未对齐异常;地址为 4 字节但不是 8 字节倍数时每个字访问必须原子,但仍可能陷入未对齐异常;其它未对齐情况也可能陷入异常。