gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:31:39 26 4
gpt4 key购买 nike

我无法理解指令 日本航空 在 MIPS 处理器中工作。
我的两个问题是:
一) 中存储的值是多少? R31 "jal"之后:个人电脑+4 个人电脑+8 ?
b) 如果真的是个人电脑+8 , 处的指令会发生什么变化个人电脑+4 ?它是在跳转之前执行还是从不执行?

在帕特森和轩尼诗(第四版),第 113 页:

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

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

读完这两条语句后, 中保存的值$ra 应该是( PC+4 )。

但是,在本书附带的MIPS引用资料(绿卡)中,jal指令的算法是这样定义的:
“跳转和链接:jal:J:R[31]=PC+8;PC=JumpAddr”

这个website还说“它真的是 PC+8 ”,但奇怪的是,在那之后它说由于流水线是一个高级主题,“我们假设返回地址是 PC+4 ” .
我来自 8086 程序集,所以我知道返回地址和后面的地址之间存在很大差异,因为如果我只是假设某些不正确的东西,程序将无法运行。谢谢。

最佳答案

$ra 中的地址实际上是 PC+8。紧跟在 jal 指令之后的指令位于“branch delay slot”中。它在函数进入之前执行,所以在函数返回时不应该重新执行。

Mips 上的其他分支指令也有分支延迟槽。

延迟槽用于在执行 jal 指令时做一些有用的事情。

关于MIPS - JAL 混淆 : $ra = PC+4 or PC+8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9548927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com