如何在 RISC-V 程序集中使用数组

bee*_*eep 5 assembly riscv

我正在学习 RISC-V 汇编,我需要将数组用于我正在解决的练习;问题是我正在使用的模拟器(RARS)给了我一个错误:
Error in /home/username/file_name line 8: Runtime exception at 0x00400010: address out of range 0x000003e8.

这是我到目前为止编写的代码:

.data
arr: .word 1000
e0: .word 5

.text
lw t1, arr # load arr into t1
lw t2, e0 # Load e0 value into t2
sw t2, 0(t1) # save t2 value into arr[0]
Run Code Online (Sandbox Code Playgroud)

我在做什么错?

眠りネ*_*ネロク 5

该指令sw t2, 0(t1)将寄存器的内容存储到寄存器t2提供的内存地址中t1。但是,t1不包含标签对应arr的地址——值1000存储的地址——因为t1是由指令初始化的lw t1, arr,这会将对应地址的内容加载到arrin中t1,即,将值加载1000到中t1

相反,替换lw t1, arrla t1, arr,它确实加载到t1arr代表的地址中。