任何一种计算机语言都要从人们容易理解的形式(源代码)转化成为机器能执行的形式(计器指令),编译器能直接把源代码转化成为汇编语言或者机器指令,这是一个复杂的过程,通常需要几步完成。

    某些语言(如C/C++)可以采用分段编译分别编译各段程序,特别是对于创建一个大的程序而言,分段编译就尤为重要了。每次创建和测试程序的一部分,当这部分程序能正常运行后,就把它作为目标程序组块加入到对应的库中,供其他程序员使用。

    为了用C/C++编程,就应该了解计算机语言编译过程的步骤:

    首先  要对源代码进行预处理

     预处理程序是一些行首以#开始的特殊语句,例如:#include,#define等。是在编译程序的编译过程中,进行其它编译处理(词法分析、语法分析、代码生成、优化和连接等)之前,在程序中对宏名、包含文件和条件编译做相应的替换,预处理过的代码通常存放在一个中间文件中。

    其次  对预处理过的代码进行语法分析

  编译器把预处理过的源代码分解成小的单元并把它们按树型结构组织起来,表达式"A+B"中的"A"、"+"、"B"就是语法分析树的叶子节点,然后由代码生成器遍历语法分析树,把树的每个节点转化成为汇编语言或机器代码。如果是生成汇编语言还要用汇编器对其汇编。最后的结果是生成若干目标模块(.obj)。

    最后  生成系统可加载和执行的程序

    连接器把由编译器生成的目标模块连接成为操作系统可以加载和执行的程序(.exe),并搜索其包含的目标模块和库文件来处理所有的引用。此时连接器还会秘密的连接某些模块,其中之一就是启动模块(包含了对程序进行初始化的例程)。连接器是按指定的顺序查找目标文件和库文件的,所以要注意给定连接器的文件顺序。

  

posted on 2010-11-29 21:29  kopgroup  阅读(240)  评论(0编辑  收藏  举报