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