我正在學習MIPS指令,這個問題讓我有些困惑,因爲MIPS文檔似乎在說一些與提供的答案不同的東西。這裏是問題和答案:跳轉和鏈接寄存器MIPS
什麼寄存器引用和/或改變在這個指令在位置
0x5000
?0x5000 : 0x0140F809
答案:
操作碼=
0x00
,R型,功能= 0×09(jalr
),RS = 10($t2
)跳躍
$t2
提出
0x5004
解決在$ra
但是,從文檔中可以看出,在寄存器31($ra
)中,它將PC + 4置位。因此,由於指令在地址0x5000處執行,PC應該是0x5004嗎?那麼JALR
指令不應該將0x5004 + 4或0x5008放入PC而不是0x5004?
對我來說它是有道理的,它應該跳回到0x5004,因爲這在技術上是跳轉後的下一條指令,但文檔明確地說R [31] = PC + 4,所以它讓我困惑一點,將是x5008。謝謝!