1
假設一個名爲L1的標籤。在MIPS,人們可以很容易做到:MIPS:使用間接跳轉的分支?
beq $t1, $t2, L1
但是,有沒有辦法做到用間接尋址一樣嗎?據此,我的意思是使用一個寄存器來保存找到L1
的地址。我知道jr
命令,但我不明白它如何用於此目的。
假設一個名爲L1的標籤。在MIPS,人們可以很容易做到:MIPS:使用間接跳轉的分支?
beq $t1, $t2, L1
但是,有沒有辦法做到用間接尋址一樣嗎?據此,我的意思是使用一個寄存器來保存找到L1
的地址。我知道jr
命令,但我不明白它如何用於此目的。
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
這裏沒有MIPS標記,因爲這是一個計算機科學站點,而不是編程站點。遷移... – Gilles