【问题标题】:How to use an array in RISC-V Assembly如何在 RISC-V 程序集中使用数组
【发布时间】:2020-05-05 21:36:19
【问题描述】:

我正在学习 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]

我做错了什么?

【问题讨论】:

    标签: assembly riscv


    【解决方案1】:

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

    改为将lw t1, arr 替换为la t1, arr,这会加载到t1arr 所代表的地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2020-02-22
      • 2019-03-24
      • 1970-01-01
      相关资源
      最近更新 更多