想象一下这段代码
int main()
{
f();
}
void f() { g(); }
void g() { cout << "hello" << endl; }
当调用f时,在RA(返回地址)寄存器中存储调用f的main中的地址(f表示完成时跳转的位置)。当f调用g时,它应该将RA设置为f,g中的地址以知道返回的位置。那怎么办?是将f存储在临时位置或其他地方,而不是覆盖旧值吗?
感谢。
答案 0 :(得分:0)
没有任何优化,例子中的常用过程:
这是理论。编译器可能会发出不同的代码。
编辑1:
有关具体细节,请告诉编译器打印汇编语言。