assembly 按寄存器中的值偏移(以MIPS为单位)

o2rvlv0m  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(130)

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

beq87vna

beq87vna1#

在MIPS中,您可以使用寄存器、偏移量或两者相加;而不是两个寄存器来形成有效地址。
因此,如果要将单个寄存器所指向的字加载到(比如$t0)中,则应执行以下操作:

lw $t0, ($t2)

然而,如果要将有效地址$t1 + $t2指向的字加载到$t0,则首先需要执行加法,然后从存储器加载该字,例如:

addu $t1, $t1, $t2
lw $t0, ($t1)

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

相关问题