有效地址
存储指令通过 rs1 加符号扩展的 12 位偏移量形成有效字节地址。SW 的偏移量编码范围同样是 -2048 到 2047。
RISC-V Unprivileged ISA, RV32I load and store instructionsSW 使用 opcode 0100011(0x23)、funct3 010。rs1 保存基地址,rs2 保存存储数据,12 位立即数(拆分在 imm[11:5] 和 imm[4:0])提供偏移量。
SW指令采用S型格式(opcode=0100011, funct3=010)。有效地址由rs1与12位有符号偏移相加得到,将rs2寄存器的低32位写入该地址。字访问的自然对齐地址为4的倍数。这是RV32I最主要的内存存储指令,用于保存寄存器值到内存。
SW 使用 rs1 加 12 位有符号偏移形成有效地址,并把 rs2 的低 32 位字写入内存。
以下要点按 RISC-V Unprivileged ISA 手册核准,用于补充操作语义、立即数范围和边界行为。
存储指令通过 rs1 加符号扩展的 12 位偏移量形成有效字节地址。SW 的偏移量编码范围同样是 -2048 到 2047。
RISC-V Unprivileged ISA, RV32I load and store instructionsSW 将 rs2 的低 32 位写入内存;它不会把整个 XLEN 宽寄存器都写出去。
RISC-V Unprivileged ISA, RV32I load and store instructions使用 jal ra, label 或 jalr ra, rs, imm。
结合 «sw x5, 0(x10) # mem[x10+0][31:0] = x5[31:0]» 等实际代码理解该场景。
结合 «sw x5, 0(x10) # mem[x10+0][31:0] = x5[31:0]» 等实际代码理解该场景。
SW 只写 rs2 的低 32 位字,不是总是写完整 XLEN 宽寄存器。
有效地址由基址寄存器 rs1 加符号扩展的 12 位字节偏移得到。