[英]What happens with return address value when new function is called
想象一下这段代码
int main()
{
f();
}
void f() { g(); }
void g() { cout << "hello" << endl; }
当调用f时,在RA(返回地址)寄存器中存储从中调用f的主地址(f知道完成时跳转到的地址)。 当f调用g时,应将RA设置为f,g的地址,以知道返回的位置。 那怎么办呢? 是否将RA for f存储在临时位置或其他地方,而不是覆盖旧值?
谢谢。
如果不做任何优化,示例中的通常过程为:
这是理论。 您的编译器可能会发出不同的代码。
编辑1:
有关确切的细节,请告诉您的编译器打印汇编语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.