编译原理:(一)

来源:互联网 发布:英雄联盟知乎 编辑:程序博客网 时间:2024/05/21 10:55

编译原理:一个陌生又熟悉的词
对程序员来说:学习编译原理可以帮助程序员更深层的了解程序语言和内部机制。让我们更加深入了解计算机思想。
简单介绍计算机语言发展史:机器语言——>汇编语言——>早期高级语言——>高级语言——>面向对象语言,语言发展越来越高级,人类的文明也越来越辉煌!
编译程序、编译原理:通俗的讲就是把高级语言翻译成计算机可以读的机器语言的翻译过程,大概的流程是:词法分析、语法分析、词义分析、中间代码生成、代码优化、最终目标代码生成这几个阶段。
这里写图片描述
流水线一–词法分析:
也就是从左到右一个一个的读入源程序,识别一个单词或符号,并进行归类。类似分析汉语语法,例如,我们输入一句话,我是中国人。然后进行分析,读入我可以识别这个单词,为名词,我就归到名词这类;读入是,我们归到动词这类;读入中字,不能构成一个可识别的东东,接着读入,中国人,为名词类。而在计算机中,例如我们写的某行代码,var sum = first + count*10 ; 进行分类,1保留字:var;标识符:2 sum 3 first 4 count 乘号:5*;
流水线二–语法分析:
在词法分析的基础上,将单词序列分解成各类语法短语,如“程序”,“语句”,“表达式”等。例如通过上面的单词“我”“中国人”“是”,可以构成两种形式的语句,我是中国人,中国人是我,都符合<主语><谓语>这样的语法。
流水线三–语义分析:
审查源程序是否有语义的错误,当不符合语言规范的时候,程序就会报错。例如上面的“我是中国人”和“中国人是我”两个句子,显然后面的中国人是我就不符合语义了。
流水线四–中间代码生成:
在进行了语法和语义的分析工作之后,编译程序将源程序变成了一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。(比较抽象些),个人理解为,生成一种介于源码和机器语言的形式。
流水线五–代码优化:
这个阶段是对前阶段的中间代码进行变换或改造,目的是使生成的目标代码更为高效,即节省时间和空间。
流水线六–目标代码生成:
也就是把优化后的中间代码变换成指令代码或汇编代码。
这是工作的最后阶段,与硬件系统结构,指令系统相关,涉及到硬件系统功能部件运用、机器指令的选择等等。

出处:http://blog.csdn.net/lovesummerforever/article/details/9028479

原创粉丝点击