2015-01-14 49 views
1

假設一個名爲L1的標籤。在MIPS,人們可以很容易做到:MIPS:使用間接跳轉的分支?

beq $t1, $t2, L1 

但是,有沒有辦法做到用間接尋址一樣嗎?據此,我的意思是使用一個寄存器來保存找到L1的地址。我知道jr命令,但我不明白它如何用於此目的。

+0

這裏沒有MIPS標記,因爲這是一個計算機科學站點,而不是編程站點。遷移... – Gilles

回答

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