我有一个寄存器($ t2),它有一个随机生成的数字,然后乘以4.我的问题是,当使用lw指令时,是否可以使用$ t2中的值作为偏移量?
答案 0 :(得分:6)
在MIPS中,您可以使用寄存器,偏移量或两者的相加;但不是两个登记册形成一个有效的地址。
因此,如果您想将单个寄存器指向的单词加载到$t0
中,您可以这样做:
lw $t0, ($t2)
但是,如果要将有效地址$t1 + $t2
指向的单词加载到$t0
,首先需要执行添加,然后从内存中加载单词,例如:
addu $t1, $t1, $t2
lw $t0, ($t1)
考虑到通过执行添加,您将丢失$t1
之前的值,因此您应该使用一些免费注册作为添加的目标。