有人知道在调用将值推送到堆栈后会发生什么吗?被调用者会弹出该值,然后被调用者会弹出返回地址?也许会用到汇编代码?
我认为对于以下代码,fib 的返回值随后被用作传递给 plus 函数的参数。我感到困惑的是 fib 返回值被弹出到寄存器中,然后不知何故该值最终被推送到堆栈框架以供下一次调用。
int fib(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
return fib(n - 1) + fib(n - 2);
}
int main() {
return fib(3);
}
我正在使用下图来了解使用堆栈的线程安全方法,并了解返回值可能在某些约定的寄存器中。
参考:链接