我无法理解指令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