小编Rei*_*nCL的帖子

MIPS - JAL混淆:$ ra = PC + 4或PC + 8?

我无法理解指令jal在MIPS处理器中的工作原理.我的两个问题是:
a)在"jal"之后存储在R31中的值是什么:PC + 4PC + 8
b)如果它真的是PC + 8,那么PC + 4上的指令会发生什么?它是在跳转之前执行还是从未执行过?

在Patterson和Hennessy(第四版),第113页:

"跳转和链接指令:跳转到并寻址并同时将下一条指令的地址保存在寄存器中的指令(MIPS中的$ ra)"

"程序计数器(PC):包含正在执行的程序中的指令地址的寄存器"

阅读完这两个陈述之后,$ ra中保存的值应为(PC + 4).

但是,在本书附带的MIPS参考数据(绿卡)中,jal指令的算法定义如下:
"跳转和链接:jal:J:R [31] = PC + 8; PC = JumpAddr"

网站还声明"它真的是PC + 8 ",但奇怪的是,之后它说由于流水线是一个高级主题"我们假设返回地址是PC + 4 ".
我来自8086汇编,所以我知道返回地址和跟随地址之间存在很大差异,因为如果我假设某些事情并非如此,那么程序将无法工作.谢谢.

mips program-counter

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

mips ×1

program-counter ×1