【c语言】从高级语言到可以执行的EXE程序的编译过程

距离上一篇文章已经有一个月的时间了

我居然花了一个月的时间来研究计算机导论这个课题!!!

没办法,谁叫我就要考试了呢?

——————————————下面是正文————————————————

       对于程序猿来说,“程序”二字对我们已经并不陌生了,甚至可以是听到想吐的程度......但是身为有一名程序猿,你真的知道什么叫 “ 程序 ” 、“ 代码 ” 和 “ 编译 ” 吗? 你能用几句话来概括这些概念的含义吗?,没错!一个月前我就是因为实战经验多于理论经验,所以一听到要考C语言的我昂首挺胸地说绝对不会80!!结果成绩出来差点挂科......所以说要了解一个东西,是要从内到外都要了解才行呀......

—————————————这里是真正的正文——————————————

      首先要了解的是   程序是指能够实现特定功能的一组指令序列的集合,也可以描述为 “ 程序 = 算法 + 数据结构 ”  

       一个程序从最开始的一堆用高级语言(JAVA、C++\C等)编写到最后 “ 翻译 ” 成电脑能够识别的低级语言(例如汇编语言等),中间是要经过几道必要的工序的,如下图所示

【c语言】从高级语言到可以执行的EXE程序的编译过程_第1张图片

      其中替换的功能如下

                             【c语言】从高级语言到可以执行的EXE程序的编译过程_第2张图片

     而经过替换之后,就来到了 “ 编译 ” 环节了, “ 编译 ” 所要执行的步骤有很多,主要是一下几个步骤

【c语言】从高级语言到可以执行的EXE程序的编译过程_第3张图片

一.词法分析:从左到右逐个字符地对源程序进行扫描,读入源程序,对构成源程序的字符流进行扫描和分解,通过词法分析识别出每个单词。

二.语法分析:在词法分析的基础上将单词序列分解成各类语法短语,如 " 程序" 、 “ 语句” 、 “ 表达式” 等。

三.语义处理:通过词法分析程序和语法分析程序对源程序的语法结构进行分析之后,一般由语法分析程序调用相应的语义子程序进行语义处理

(1). 审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正的有意义,有时把这个工作成为静态语义分析或者静态审查

(2). 如果静态审查是正确的,则语义处理要执行真正的翻译,要么生成程序的一种中间表示形式(中间代码),要么生成实际代码。

四.中间代码生成:为了使得编译结构在逻辑上更为简单、明确,通常采用中间代码,这样就可以将与机器相关的某些实现细节置于代码生成阶段处理,并且可以在中间代码以及进行优化工作,使得代码优化比较容易实现。

五.中间代码优化:对中间代码进行变换或进行改造,目的是使生成的目标代码更为高效。

六.目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。

 

       在经过 替换编译 之后 ,在进行对程序中调用到其他地方的代码进行连接,最后就变成了最后可执行的程序,整个编译过程就这样结束。

       由此可以看出,程序猿编写出来的计算机程序是一个 源程序  ,我们要把源程序翻译为机器可以识别的 “ 目标程序 ” ,代码才能真正被执行。

你可能感兴趣的:(编程语言,c语言,思维转变)