如果我使用加载字命令
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,那么它是指地址或值吗?
答案 0 :(得分:1)
在执行lw $t0, 4($t0)
之前,寄存器$t0
应包含基址。
然后,指令将位于地址$t0+4
的单词加载到寄存器$t0
中。执行后,$ t0保存存储在该地址中的值($ t0 + 4),前一个值为"丢失" (也就是说,它被内存读取覆盖)。
任何值都可以解释为地址,任何地址都可以解释为一个值(即它们只是32位值)。您的代码可以为这些值赋予意义。似乎$t0
意味着是指令之前的数组的基地址并包含一些值(如果我们假设$t0
持有基数地址,则包含数组的索引1的内容执行指令后的数组。