【发布时间】:2013-03-09 07:04:35
【问题描述】:
在C++ FAQ:
假设一个具有寄存器和堆栈的典型 C++ 实现, 寄存器和参数在 调用 g(),然后从 g() 内部的堆栈中读取参数 并在 g() 返回 f() 时再次读取以恢复寄存器。
关于嵌套函数调用
void f()
{
int x = /*...*/;
int y = /*...*/;
int z = /*...*/;
...code that uses x, y and z...
g(x, y, z);
...more code that uses x, y and z...
}
1/ C++ 的所有实现都带有寄存器和堆栈吗?这是否意味着:实现依赖于编译器/处理器/计算机体系结构?
2/ 当我调用f() 时,指令序列是什么(没有汇编语言,只是全局)?我已经阅读了关于这个主题的不同内容,而且我不记得提到的寄存器,但只有堆栈。
3/ 当您处理嵌套函数时,还有哪些额外的特性/要点需要强调?
谢谢
【问题讨论】:
-
“嵌套函数”?你的意思是“函数调用”吗?在 C++ 中调用函数并没有什么特别之处。事实上,这是一种相当常见的编程方式。
-
"所有的 C++ 实现都带有寄存器和堆栈吗?"没有.????
-
"当我调用 f() 时会发生什么?" f() 被调用并流到那里,这不是真正的火箭科学
-
我的意思是函数调用。是的,这是一个相当常见的问题,关于指令/当我在 C++ 中调用函数时内部会发生什么(因为有机会对这个问题有一个明确的答案,并且因为我想知道嵌套调用的特别之处)
-
我把问题说得更清楚了,我正在寻找函数调用说明的工作流程:)
标签: c++ architecture call cpu-registers function-calls