2.1 被隐藏了的过程

当我们使用GCC来编译Hello World程序时:

$gcc hello.c

$./a.out

Hello World

事实上,上述过程可以分为4个步骤,分别是预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。

头文件被预编译成.i文件,预编译过程主要是处理那些源代码中以#开始的预编译指令。

#define删除

处理所有条件预编译指令,#if之类

处理#include预编译指令

删除注释

添加行号和文件名标识,用于调试和编译时产生的错误和警告

保留#pragma编译器指令

编译过程就是把预处理完的文件进行一系列词法分析,语法分析、语义分析及优化后生成相应的汇编代码文件。

gcc这个程序只是后台程序的包装,它会根据不同的参数要求去调用预编译编译程序cc1、汇编器as、链接器ld。

汇编器是将汇编代码转变成机器可以执行的指令,每一个汇编语句几乎都对应一条机器指令。

汇编器的汇编过程相对于编译器来讲比较简单,它没有复杂的语法,也没有语义,也不需要做指令优化,只是根据汇编指令和机器指令的对照表一一翻译就可以了。

您还未添加分享代码,请到主题选项中,添加百度分享代码!

您可以选择一种方式赞助本站

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情