Assembly 执行JAL 0x00400070期间会发生什么

Assembly 执行JAL 0x00400070期间会发生什么,assembly,mips,Assembly,Mips,基本上,我试图用语言描述当日本航空0x00400070执行时会发生什么。在网上查找一些日航的例子,我发现了这个 “非常棘手:机器周期的中间步骤已经将PC增加了4。此时,PC在jal指令之后保留指令的地址。现在,jal指令的执行阶段将该地址加上4,并将结果放入$ra。因此,$ra保留jal指令之后的第二条指令的地址指示。” 我的主要困惑来自这样一个事实:在机器循环期间,它已经使PC增加了四倍。我是否将此作为执行的一部分进行说明,或者这是一个不同的步骤 如果我不考虑这一点,我将得到jal指令将在ja

基本上,我试图用语言描述当日本航空0x00400070执行时会发生什么。在网上查找一些日航的例子,我发现了这个 “非常棘手:机器周期的中间步骤已经将PC增加了4。此时,PC在jal指令之后保留指令的地址。现在,jal指令的执行阶段将该地址加上4,并将结果放入$ra。因此,$ra保留jal指令之后的第二条指令的地址指示。”

我的主要困惑来自这样一个事实:在机器循环期间,它已经使PC增加了四倍。我是否将此作为执行的一部分进行说明,或者这是一个不同的步骤

如果我不考虑这一点,我将得到jal指令将在jal 0x00400070+4=0x00400074中添加四个,并将其放在$ra中。我需要在这里对电脑说些什么吗


提前感谢您的帮助

这是正常执行的一部分,因为
PC
需要前进到下一条指令。对于具有固定长度指令(如MIPS)的体系结构,我想这是获取的一部分,否则可能是解码的一部分。请注意,
0x00400070+4
不是放在
$ra
中,因为在您的示例中,
0x00400070
是目标地址,而不是当前的
PC
@Jester jal sub#$ra否,不是目标。返回地址是
JAL
自身+8的地址。