我無法理解指令jal如何在MIPS處理器中工作。 我的兩個問題是:
一)什麼是R31存儲在「日航」 後的值:PC + 4或PC + 8?
B)如果它真的PC + 8,會發生什麼變化指令在PC + 4?是在跳躍之前執行還是從未執行?
在帕特森和軒尼詩(第四版),第113:
「跳和鏈接指令:跳轉到和地址,並同時在寄存器(保存下一條指令的地址$的指令嶺在MIPS)」
‘的程序計數器(PC ):含在程序中的指令的地址寄存器正在執行’
讀取這兩個語句之後,可以得出的值SA ved in $ ra應該是(PC + 4)。
然而,在隨附書MIPS基準數據(綠色卡),JAL指令的算法被定義如下:
「跳轉和鏈接:JAL:J-:R t [31] = PC + 8 ; PC = JumpAddr「
這website還指出,‘這是真的PC + 8’,但奇怪的是,在那之後它說,由於流水線是一種先進的主題」我們假設返回地址PC +4「。
我來自8086程序集,所以我意識到回到一個地址和跟在它後面的地址之間有很大的區別,因爲如果我假設某些事情不是真的,那麼程序將不起作用。謝謝。
非常感謝!奇怪的是,許多網站提供了錯誤的信息(PC + 4)。 – ReimannCL 2012-03-03 20:50:33