有谁知道调用将一个值压入堆栈后会发生什么,它被被调用者弹出,然后返回地址被被调用者弹出?也许需要一些组装?
我认为对于以下代码,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);
}
我使用下图来了解使用堆栈的线程安全方式,并了解返回值可能位于某些约定的寄存器中。
参考:链接