编译器cc1将文本文件hello.i翻译成文本文件hello.s,它包含一个汇编语言程序。汇编语言程序中的每条语句都以一种标准的文本格式确切地描述了一条低级机器语言指令。汇编语言的有用之处在于它为不同高级语言的不同编译器提供了通用的输出语言。
编译过程就是把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生产相应的汇编代码文件,这个过程往往是整个程序构建核心部分,也是比较复杂的部分。
现在在gcc版本,都把预处理和编译两个步骤合成了一个步骤,使用一个叫cc1的程序就可以完成这两个步骤,可以直接通过调用下面命令生成hello.s:
其实还有一种命令也可以一步完成:
可见实际上gcc这个命令只是这些后台程序的包装,它会根据不同的参数要求去调用预处理编译程序cc1,汇编器as,链接器ld
hello.s一共27行汇编代码,有兴趣的可以去研究下: