【发布时间】:2013-10-26 21:45:27
【问题描述】:
假设我有:
main:
// stuff
jal function_a
function_a:
// function_a stuff
jal function_b
jr $ra
function_b:
// function_b stuff
jr $ra
据我了解,main 在执行 jal function_a 时会将适当的返回地址保存在 $ra 中,但随后 function_a 在执行 jal function_b 时会覆盖 $ra,因此显然需要在某些时候保存 $ra。但我找不到任何真正说明惯例是做什么的。在调用jal function_b 之前,我是否在function_a 中将$ra 存储在堆栈中?我是否在调用jal function_b 之前将$ra 存储在s-register 中,然后将该s-register 保存在function_b 的开头(我认为这是暗示here)?有些不同?有关系吗?
【问题讨论】: