MIPS寄存器中的值偏移量

use*_*851 4 mips

我有一个寄存器($ t2),它有一个随机生成的数字然后乘以4.我的问题是,是否可以使用$ t2中的值作为使用lw指令时的偏移量?

gus*_*bro 7

在MIPS中,您可以使用寄存器,偏移量或两者的相加; 但不是两个登记册形成一个有效的地址.

所以,如果你想加载一个单个寄存器指向的单词,比如说$t0,你会这样做:

lw $t0, ($t2)
Run Code Online (Sandbox Code Playgroud)

但是,如果要加载有效地址指向一个字$t1 + $t2变成$t0你首先需要从内存,例如执行加法,然后加载字:

addu $t1, $t1, $t2
lw $t0, ($t1)
Run Code Online (Sandbox Code Playgroud)

考虑到通过执行添加会丢失$t1先前的值,因此您应该使用一些空闲寄存器作为添加的目标.

  • 如果寄存器是偏移量,那么我可以使用寄存器作为偏移量吗?例如,`li $t0,#4;lw $t1, $t0($t2);`? 假设 #t2 是某个数组。 (2认同)