MIPS加载字[地址和内容混淆]

时间:2015-03-16 17:00:46

标签: mips

如果我使用加载字命令

  lw $t0, 4($t0)

和这张表

  Address   Content
    100       120
    112       108
    132       136
    136       112

    #s1 is initialised to 0
    #t0 is initialised to 112

我的困惑是,如果我将4($ t0)的值赋值给$ t0,那么$ t0的原始地址会发生什么?并且如果问题是它被初始化为112,那么它是指地址或值吗?

1 个答案:

答案 0 :(得分:1)

在执行lw $t0, 4($t0)之前,寄存器$t0应包含基址。

然后,指令将位于地址$t0+4的单词加载到寄存器$t0中。执行后,$ t0保存存储在该地址中的值($ t0 + 4),前一个值为"丢失" (也就是说,它被内存读取覆盖)。

任何值都可以解释为地址,任何地址都可以解释为一个值(即它们只是32位值)。您的代码可以为这些值赋予意义。似乎$t0意味着是指令之前的数组的基地址并包含一些值(如果我们假设$t0持有基数地址,则包含数组的索引1的内容执行指令后的数组。