假设有一个名为 L1 的标签。在 MIPS 上,可以轻松做到:
beq $t1, $t2, L1
但是有没有办法使用间接寻址来做同样的事情?我的意思是使用一个寄存器来保存L1
找到的地址。我知道该jr
命令,但我不明白它如何用于此目的。
假设有一个名为 L1 的标签。在 MIPS 上,可以轻松做到:
beq $t1, $t2, L1
但是有没有办法使用间接寻址来做同样的事情?我的意思是使用一个寄存器来保存L1
找到的地址。我知道该jr
命令,但我不明白它如何用于此目的。
beq
在其第三个参数中需要立即值,而不是寄存器或内存地址。
根据本手册的第 55页(PDF 中的第 63 页),范围beq
是 -128 KB 到 +128KB,正好是有符号 16 位整数可以表示的 4 倍:-32 KB 到 +32 KB (由于指令长度为 4 个字节,因此会自动应用 4 的乘数)。
我认为jr
应该能够完成你想要的。与其使用寄存器指向内存地址 XX,不如将地址 XX 的值加载到寄存器中并使用它来跳转。
lw $t0, XX
jr $t0