SB 会写整个寄存器吗?
SB 只写 rs2 的低 8 位字节,不是总是写完整 XLEN 宽寄存器。
SB 使用 32 位 S 型编码(opcode=0100011,funct3=000),将 rs2 的低 8 位写入内存。有效字节地址为 rs1 加符号扩展的 12 位偏移,按 XLEN 回绕;偏移范围为 -2048 到 2047。imm[11:5] 位于 inst[31:25],imm[4:0] 位于 inst[11:7]。字节访问始终自然对齐。
从机器码字段解析开始,依次展示操作数读取、该指令专属语义计算和 ISA 可见状态更新。
本例使用固定寄存器初值和初始 PC=0x2000;取指成功,没有异步中断或额外扩展检查。异常分支只显示普通提交停止,陷入后的 PC 和处理程序状态由 EEI 决定。
本例假定普通内存可写、采用小端序。成功访问存储低 8 位并推进 PC+4;不模拟一般访问权限、部分写入或设备副作用。非对齐异常不保证内存保持不变。
仅当有效地址不是 1 的倍数时使用此 EEI 分支;自然对齐访问不得引发地址未对齐异常。
机器码按当前指令格式切成字段,动画从 encoding/decode 开始。
该动画展示 ISA 可见的解码和状态变化,不表示任何特定 CPU 的流水线、缓存、预测或时序实现。
SB 使用 rs1 加 12 位有符号偏移形成有效地址,并把 rs2 的低 8 位字节写入内存。
SB 按本页的数据宽度把源值写入内存;先确认地址、区域权限及适用的 RV32I/RV64I 条件。
SB 只写 rs2 的低 8 位字节,不是总是写完整 XLEN 宽寄存器。
有效地址由基址寄存器 rs1 加符号扩展的 12 位字节偏移得到。