Compiler construction 代码生成

Compiler construction 代码生成,compiler-construction,code-generation,Compiler Construction,Code Generation,编译器如何将二进制代码生成到单独的文件中? 参考GCC源代码中处理此问题的文件将非常有帮助。 我想知道的是编译器(特别是gcc)是如何从ASM生成机器代码的?汇编程序是一个独立的实用程序。您可以在此处找到更多信息: 源代码是binutils包的一部分。你可以在这里找到:回答这个问题需要书,而不仅仅是几行 极短的版本是: 编译器分为两部分: 将特定语言(如C)转换为语法树的前端(表示程序的通用方式) 以及将语法树转换为特定于机器的(X86、ARM等)代码的后端 其中包括几个步骤: 词法分析(将“s

编译器如何将二进制代码生成到单独的文件中? 参考GCC源代码中处理此问题的文件将非常有帮助。
我想知道的是编译器(特别是gcc)是如何从ASM生成机器代码的?

汇编程序是一个独立的实用程序。您可以在此处找到更多信息:


源代码是binutils包的一部分。你可以在这里找到:

回答这个问题需要书,而不仅仅是几行

极短的版本是:

编译器分为两部分:

  • 将特定语言(如C)转换为语法树的前端(表示程序的通用方式)

  • 以及将语法树转换为特定于机器的(X86、ARM等)代码的后端

  • 其中包括几个步骤:

  • 词法分析(将“switch”等关键字转换为代码)
  • 语法分析(从上一步转换为语法树)
  • 代码优化(修改语法树以提高性能)
  • 代码生成(从语法树生成机器代码)
  • 链接(将多个执行单元合并到一个二进制文件中)

  • 谷歌搜索可以给你提供更详细的信息。

    你能更具体一点吗?请提供一个例子来激发思考。:)我想知道的是编译器(特别是gcc)如何从ASMI生成字节码(?),我已经将您的语句作为编辑添加到问题本身中。有人可能会发现它很有用这太宽泛了,依我看。你是在问编译器后端是如何工作的?@EtiennedeMartel:大概他的意思是“机器代码”,我找不到它的源代码(它不是开源的吗?)。如果可能的话,请发布一个链接这些确实是编译器将一种语言(C++)翻译成另一种语言(特定机器的汇编代码)的步骤的概述。如果你想了解更多,我建议你读一本关于编译器的非常有名的书,如果我读过的话,这是一本非常好的概述。它可能需要第三部分:利润。