无法将以 x+4 地址开始的单词加载到 QtSpim 中的注册表中

Can't load a word starting at x+4 address into registry in QtSpim

我想从内存中加载一个单词,地址为 x +4 到注册表中,但以下代码不起作用。我做错了什么?

.data

    x:  .word   10
    y:  .word   11
    z:  .word   12

    .text
    main:
        lw  $t0, x
        lw  $t1, 4($t0)
        li  $v0, 10
        syscall

我在 inst/data 获取错误和发生异常时得到一个未对齐的地址

您没有正确加载 x 的地址:

lw  $t0, x

那条指令(其实是两条指令,因为lw reg,absolute_address是伪指令)把位于x加载到$t0.所以你得到 $t10 = 10,然后在下一行你尝试从地址 10 + 4 == 14 加载,当然你不能这样做,因为地址需要字对齐。

如果你想将x地址加载到$t0中,你应该使用的是:

la  $t0, x