用一个简单的c ++程序编译过程

这个问题在这里已经有了答案:

  • 编译/链接过程如何工作? 5个答案

  • 这是一个非常广泛的问题,但我会尽可能简短地回答。 典型的语言处理系统有以下几个阶段:

    1.预处理阶段 - 在这个阶段中,所有的预处理器和宏都被处理,并且代码被生成,而这些代码是没有这些的。 这涉及用宏体替换宏调用并用实际参数替换形式参数。

    2.编译阶段 - 这有几个较小的阶段,例如:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等。编译阶段可能会/可能不会生成汇编代码。 这两种方法都有各自的优点和缺点。 我们将假定汇编代码是在这个讨论中产生的。

    3.汇编阶段 - 汇编器将编译器的输出转换为目标代码。 汇编可以是一次通过或两次通过。

    4.链接阶段 - 已生成的代码有许多引用和调用在其他模块中定义的子例程。 这些模块在这个阶段被链接到代码,并且地址被分配给这些外部引用的指令。

    5.加载阶段 - 在这个阶段,前一阶段产生的所有段被加载到RAM中用于实际执行,控制权被传递到第一条指令。

    在这个答案中列出的所有组件都有许多错综复杂的细节和子部分,决不是语言处理器的完整解释。

    有些书籍如作者DM Dhamdere,Tannenbaum和Alfred Aho在这些主题上很有用。

    链接地址: http://www.djcxy.com/p/73305.html

    上一篇: Compiling process in terms of a simple c++ program

    下一篇: How is the header file connected to the corresponding .cpp file?