SB 会写整个寄存器吗?
SB 只写 rs2 的低 8 位字节,不是总是写完整 XLEN 宽寄存器。
SB 使用 opcode 0100011(0x23)、funct3 000。rs1 保存基地址,rs2 保存存储数据,12 位立即数(拆分在 imm[11:5] 和 imm[4:0])提供偏移量。
SB指令采用S型格式(opcode=0100011, funct3=000)。有效地址由rs1与12位有符号偏移相加得到,将rs2寄存器的低8位写入该地址。S型指令的立即数分为两段编码:高7位在inst[11:5],低5位在inst[4:0]。未对齐访问行为由EEI定义。
SB 使用 rs1 加 12 位有符号偏移形成有效地址,并把 rs2 的低 8 位字节写入内存。
结合 «sb x5, 0(x10) # mem[x10+0][7:0] = x5[7:0]» 等实际代码理解该场景。
结合 «sb x5, 0(x10) # mem[x10+0][7:0] = x5[7:0]» 等实际代码理解该场景。
结合 «sb x5, 0(x10) # mem[x10+0][7:0] = x5[7:0]» 等实际代码理解该场景。
SB 只写 rs2 的低 8 位字节,不是总是写完整 XLEN 宽寄存器。
有效地址由基址寄存器 rs1 加符号扩展的 12 位字节偏移得到。