编译器如何生成单独文件的二进制代码? 对GCC源代码中的哪些文件的引用会对此有所帮助。 我想知道的是编译器(特别是gcc)究竟是如何从ASM生成机器代码的?
答案 0 :(得分:9)
要回答这个问题,人们需要书籍,而不仅仅是几行。
极短版本是:
编译器分为两部分:
将特定语言(如C)翻译成语法树(表示程序的通用方式)的前端
和一个后端,它将语法树转换为特定于机器的(X86,ARM,...)代码。
涉及以下几个步骤:
Google搜索可以为您提供更详细的信息。
答案 1 :(得分:6)
汇编程序是一个单独的实用程序。您可以在此处找到更多信息:http://en.wikipedia.org/wiki/GNU_Assembler
源代码是binutils包的一部分。您可以在此处找到它:ftp://ftp.gnu.org/gnu/binutils/