2011-11-03 212 views
0

據我所知,程序計數器$ PC對用戶是隱藏的。它不是32個寄存器之一。

我要做到以下幾點,而不是使用JAL

$ra <= PC + 4 
j my_function 
# instead of jal my_function 

是有可能做到這一點?我知道JAIL是一個宏。

如何在不使用JAL的情況下跳轉到函數並能夠返回到調用者的下一條指令?謝謝。

謝謝!


一個支持的「發現」代碼中的PC是使用JAL 具有零偏移(跳躍/鏈接到下一指令)方法,然後閱讀 的PC出R31的。

嘗試:

..statements before jump... 
jal $0 
addi $t3, $ra, 4 
..statements when function returns.. 

我在無限循環結束了。

回答

2

做一個JAL找出PC沒什麼用處,因爲你可以使用JAL做跳躍......它使用LA僞指令,像其中一個辦法:

la $ra, current 
addiu $ra, $ra, 8 
current: 
j example 
nop 
return: 
j return 
nop 

example: 
jr $ra 
nop 
+0

謝謝!我需要多一點時間來檢查這一點。謝謝。 :))) – CppLearner

相關問題