RV32 与 RV64 的结果有什么不同?
RV64 C/Zca 写一个64位寄存器。RV32 必须有 Zclsd,写偶/奇寄存器对;低编号寄存器接收低32位,端序不改变此映射。
RV64 C/Zca:从sp/x2加偏移加载64位双字;RV32 Zclsd:加载到偶/奇寄存器对。
C.LDSP 使用 CI 格式,基址为 sp/x2。字节偏移为 0–504 的 8 倍数,已包含缩放,零扩展后加旧基址。在 RV64 C/Zca 中,成功访问把64位值写入 rd;在 RV32 Zclsd 中,偶数目的寄存器及下一奇数寄存器分别接收低/高32位。rd 是完整5位字段,x0 保留。
只展示官方定义的 16 位字段、地址/立即数计算和架构状态;不模拟流水线、缓存、端序实现或时序。
RV64 C / Zca
有效地址为 8 的倍数时自然对齐,地址未对齐选项不适用;访问错误仍可发生。未对齐访问能否完成由 EEI 定义。内存值已按 EEI 端序解释。
RV64 C/Zca:从sp/x2加偏移加载64位双字;RV32 Zclsd:加载到偶/奇寄存器对。
RV64 C/Zca,旧 sp=0x2000、mem64[0x2010] = 0x0123456789abcdef 且访问成功:c.ldsp x10, 16(sp) 写 x10。RV32 Zclsd 写 x10=0x89abcdef、x11=0x01234567;sp 不变。
RV64 C/Zca 写一个64位寄存器。RV32 必须有 Zclsd,写偶/奇寄存器对;低编号寄存器接收低32位,端序不改变此映射。
RV32 Zclsd 不能作此保证:基址必须保持原值,但其它目的寄存器可以已更新。成功加载才交付完整的寄存器对结果。