SD 只在 RV64 上可用吗?
RV64I 定义单寄存器 SD。RV32 Zilsd 也定义同编码的 SD,但源是偶/奇寄存器对;动画仅演示 RV64I。
RV64I:将rs2的64位值存入内存;RV32 Zilsd:从偶/奇寄存器对存储64位值。
扩展条件:RV64I 使用单个 64 位 rs2;RV32 必须启用 Zilsd,使用偶数 rs2 指定寄存器对。
SD 使用 32 位 S 型编码(opcode=0100011,funct3=011)。RV64I 将 rs2 的 64 位值写入 rs1 加符号扩展 12 位偏移处;地址计算按 XLEN 回绕。RV32 Zilsd 使用同一编码,要求偶数 rs2:rs2 保存低 32 位,rs2+1 保存高 32 位,与字节序无关;rs2=x0 时整个 64 位源值为零,不读取 x1。Zilsd 的 8 字节对齐访问不得引发地址未对齐异常,但双字访问不保证原子;地址为 4 的倍数时每个 word 访问必须原子,4 字节对齐但非 8 字节对齐时仍可陷入。
从机器码字段解析开始,依次展示操作数读取、该指令专属语义计算和 ISA 可见状态更新。
本例使用固定寄存器初值和初始 PC=0x2000;取指成功,没有异步中断或额外扩展检查。异常分支只显示普通提交停止,陷入后的 PC 和处理程序状态由 EEI 决定。
本例假定普通内存可写、采用小端序。成功访问存储低 64 位并推进 PC+4;不模拟一般访问权限、部分写入或设备副作用。非对齐异常不保证内存保持不变。
仅当有效地址不是 8 的倍数时使用此 EEI 分支;自然对齐访问不得引发地址未对齐异常。
机器码按当前指令格式切成字段,动画从 encoding/decode 开始。
该 SD 动画只建模 RV64I 的单寄存器 64 位存储;RV32 Zilsd 使用同一助记符和编码但操作偶/奇寄存器对,其独立条件见静态页面内容。
RV64I 的 SD 存储一个 64 位寄存器;RV32 Zilsd 的 SD 存储偶/奇寄存器对,不能混淆两种源值。
SD 按本页的数据宽度把源值写入内存;先确认地址、区域权限及适用的 RV64I/Zilsd 条件。
SD 按本页的数据宽度把源值写入内存;先确认地址、区域权限及适用的 RV64I/Zilsd 条件。
RV64I 定义单寄存器 SD。RV32 Zilsd 也定义同编码的 SD,但源是偶/奇寄存器对;动画仅演示 RV64I。