4

我对 $ra 返回地址的概念很困惑。它是返回当前正在执行的指令的地址还是下一条要执行的指令的地址?如需解释,请使用以下代码,

  1. 考虑一个调用三个函数 func_A、func_B 和 func_C 的代码片段。指令 1 位于地址 1996。当调用这三个函数中的每一个时,将在寄存器 $ra 中加载什么?
Instruction 1
Instruction 2
jal func_A
Instruction 3
jal func_B
Instruction 4
jal func_C
Instruction 5

提前致谢。

4

1 回答 1

9

下一条指令存储在 $ra

所以,调用 func_A 时,$ra = 2008; 调用 func_B 时,$ra = 2016; 调用 func_C 时,$ra = 2024。

这是合乎逻辑的,因为您从子程序返回jr $ra,因此在子程序调用之后跳转到指令。

于 2011-08-21T16:22:44.193 回答