我正在学习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。谢谢!