编译原理第一课

一、编译程序与翻译程序、汇编程序的联系与区别:

翻译程序是指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。

编译程序是翻译程序的一种,将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。翻译程序的另一种是解释程序.

汇编程序:也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序

编译程序与汇编程序的区别:如果源语言是例如C、C++、Java等“高级语言”,而目标语言是汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。

 

二、编译过程包括哪几个主要阶段及每个阶段的主要功能。

编译过程通常分为6个主要阶段:

  词法分析、语法分析、语义分析、中间代码生成、代 码优化和目标代码生成

各个阶段的主要功能如下:

  词法分析阶段:读入源程序,对构成源程序的字符流进行扫描和分 解,识别出一个个单词,并表示成计算机内部的形式(TOKEN 字)。

  语法分析阶段:在词法分析的基础上,将单词序列分解成各类语法 短语,如“表达式”、“语句”、“程序”等,确定整个输入串是否构成语法上正确的程序。

  语义分析阶段:审查源程序有无语义错误,为代码生成阶段收集类 型信息。

  中间代码生成阶段:将源程序翻译成一种复杂性介于源程序与目标 程序之间的内部形式(中间代码)。

  代码优化:对前阶段产生的中间代码进行等价变换,目的是使将来 生成的目标代码更为高效。

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

 

三、简述解释程序与编译程序的区别

编译程序:是将高级语言程序源代码作为输入,翻译生成出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果编译程序工作时,先分析,后综合,从而得到目标程序,另外,大多数扫描直接生成机器语言的目标代码,但是有的也生成汇编语言的目标代码,进而在转化为机器语言的目标代码

 

解释程序同样将源代码(如basic语言)的程序作为输入,解释一句就提交计算机执行一次,并不形成目标文件,就想口语交际的翻译,说出一句翻译一句,或者是终端的dos窗口,在终端输入一条命令语句,解释程序立刻返回给终端若干句。

 

区别

  1、解释程序的执行速度相对较慢,不生成任何目标代码;编译程序编译后生成目标文件,再次运行时只需要运行目标文件,速度较快。

  2、编译程序在程序未翻译完成前是不能运行的,解释程序则不需要。

 

 

原文地址:https://www.cnblogs.com/ccla/p/11452034.html