我对$ ra返回地址的概念感到很困惑。它是否返回正在执行的当前指令的地址或要执行的指令?有关说明,请使用以下代码
- 考虑一个调用三个函数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
提前致谢。
答案 0 :(得分:9)
下一条指令存储在$ ra
中所以,当调用func_A时,$ ra = 2008;当调用func_B时,$ ra = 2016;当调用func_C时,$ ra = 2024。
这是合乎逻辑的,因为你从子程序返回jr $ra
,因此跳转到子程序调用后的指令。