Rei*_*nCL 14 mips program-counter
我无法理解指令jal在MIPS处理器中的工作原理.我的两个问题是:
a)在"jal"之后存储在R31中的值是什么:PC + 4或PC + 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汇编,所以我知道返回地址和跟随地址之间存在很大差异,因为如果我假设某些事情并非如此,那么程序将无法工作.谢谢.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           15707 次  |  
        
|   最近记录:  |