如何将生成的总和值存储到内存 RISC-V
How can I store the resulting sum values to memory RISC-V
在 RISC-V 中,我可以使用什么代码来提取值并将值存储到内存中?
例如,我可以使用:
sw s1, 0(t6) #stores updated value at t6
这是将结果保存到新的内存地址t6
还是将其放回数组中?因此所有数组值都存储在 s1
RV32I 是一个 load-store 架构,其中只有加载和存储指令访问内存,而算术指令仅在 CPU 寄存器上运行。加载和存储指令在寄存器和内存之间传输一个值。
负载
imm[11:0] | rs1 | funct3 | rd | opcode
12 | 5 | 3 | 5 | 7
offset[11:0]| base | width | dest | LOAD
商店
imm[11:5] | rs2 | rs1 | funct3 | imm[4:0] | opcode
7 | 5 | 5 | 3 | 5 | 7
offset[11:5]| src |base | width | offset[4:0]| STORE
说明:
Load Byte LB rd,rs1,imm
Load Halfword LH rd,rs1,imm
Load Word L{W|D|Q} rd,rs1,imm
Load Byte Unsigned LBU rd,rs1,imm
Load Half Unsigned L{H|W|D}U rd,rs1,imm
Store Byte SB rs1,rs2,imm
Store Halfword SH rs1,rs2,imm
Store Word S{W|D|Q} rs1,rs2,imm
其中 rs - 寄存器源,rd - 寄存器目标,imm - 立即值。
换句话说,我们只是在内存中加载和存储数据。如果我们想从内存加载我们应该使用:
lw t1, 28(a0)
其中 t1 - 临时寄存器,地址 a0 处内存读取操作的目标,偏移量为 28。如果 a0 等于 4000,我们将从中读取的地址将为 4028。
同理存储,反之亦然:
sw t1, 28(a0)
正在将t1寄存器的值存入内存地址a0+28。
强烈建议将数据与其数据类型对齐,否则运行速度会很慢!
同样对于 RV64,我们只是将地址 space 扩展为 64 位。其余几乎相同。
试着看看这个文档,它对 riscv 程序员非常有用:
https://riscv.org//wp-content/uploads/2017/05/riscv-spec-v2.2.pdf
在 RISC-V 中,我可以使用什么代码来提取值并将值存储到内存中?
例如,我可以使用:
sw s1, 0(t6) #stores updated value at t6
这是将结果保存到新的内存地址t6
还是将其放回数组中?因此所有数组值都存储在 s1
RV32I 是一个 load-store 架构,其中只有加载和存储指令访问内存,而算术指令仅在 CPU 寄存器上运行。加载和存储指令在寄存器和内存之间传输一个值。
负载
imm[11:0] | rs1 | funct3 | rd | opcode
12 | 5 | 3 | 5 | 7
offset[11:0]| base | width | dest | LOAD
商店
imm[11:5] | rs2 | rs1 | funct3 | imm[4:0] | opcode
7 | 5 | 5 | 3 | 5 | 7
offset[11:5]| src |base | width | offset[4:0]| STORE
说明:
Load Byte LB rd,rs1,imm
Load Halfword LH rd,rs1,imm
Load Word L{W|D|Q} rd,rs1,imm
Load Byte Unsigned LBU rd,rs1,imm
Load Half Unsigned L{H|W|D}U rd,rs1,imm
Store Byte SB rs1,rs2,imm
Store Halfword SH rs1,rs2,imm
Store Word S{W|D|Q} rs1,rs2,imm
其中 rs - 寄存器源,rd - 寄存器目标,imm - 立即值。
换句话说,我们只是在内存中加载和存储数据。如果我们想从内存加载我们应该使用:
lw t1, 28(a0)
其中 t1 - 临时寄存器,地址 a0 处内存读取操作的目标,偏移量为 28。如果 a0 等于 4000,我们将从中读取的地址将为 4028。
同理存储,反之亦然:
sw t1, 28(a0)
正在将t1寄存器的值存入内存地址a0+28。 强烈建议将数据与其数据类型对齐,否则运行速度会很慢! 同样对于 RV64,我们只是将地址 space 扩展为 64 位。其余几乎相同。 试着看看这个文档,它对 riscv 程序员非常有用: https://riscv.org//wp-content/uploads/2017/05/riscv-spec-v2.2.pdf