【发布时间】:2013-04-11 20:50:12
【问题描述】:
我也是 C/C++ 和汇编语言的新手。 这也可能是非常基本的问题。 我试图了解堆栈帧是如何构建的以及哪些变量(参数)以什么顺序被推送到堆栈? 一些搜索结果表明...... C/C++ 的编译器根据函数内执行的操作来决定。例如,如果假设函数只是将传递的 int 参数的值增加 1 并返回(类似于 ++ 运算符),它将把函数的所有参数和局部变量放在寄存器中的函数中并执行加法。 ...想知道哪个寄存器用于返回/按值传递?....如何返回引用? .....b/w eax、ebx、ecx 和 edx 的区别。
请求书籍/博客/链接或任何类型的材料来理解寄存器、堆栈和堆引用在函数调用期间被使用/构建和销毁....以及主函数是如何存储的? 提前致谢
【问题讨论】:
-
C++ 语言对此只字未提。编译器可以做他们喜欢的事情。因此,您的问题应该具体说明您正在谈论哪些编译器,因为答案将取决于此。你最好的理解可能是编写一些 C++ 代码,看看你最喜欢的编译器实际上做了什么。
-
里程太宽,不适合 SO。
-
您对此有什么了解。您是计算机科学家还是软件开发人员?你的背景是什么?
标签: c++ c compiler-construction stack