假设一个名为L1的标签。在MIPS上,人们可以很容易地做到:
beq $t1, $t2, L1
但是有没有办法使用间接寻址来做同样的事情?我的意思是使用一个寄存器来保存找到L1
的地址。我知道jr
命令,但我不知道它是如何用于此目的的。
答案 0 :(得分:2)
beq
在其第3个参数中需要立即值,而不是寄存器或内存地址。
根据this manual的第55页(PDF中的第63页),beq
的范围是-128 KB到+ 128KB,这正是签名的16位的4倍整数可以表示:-32 KB到+32 KB(因为指令长度为4个字节,自动应用乘数4)。
我认为jr
应该能够达到你想要的效果。不要使用寄存器指向存储器地址XX,只需将地址XX的值加载到寄存器中并使用它来跳转。
lw $t0, XX
jr $t0