编译技术习题一.doc

编译技术习题一.doc

ID:52268302

大小:94.00 KB

页数:2页

时间:2020-03-26

编译技术习题一.doc_第1页
编译技术习题一.doc_第2页
资源描述:

《编译技术习题一.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、习题一1.1最早的计算机程序设计语言是机器语言(指令系统),机器语言屮的指令都是川二进制代码直接表示的。随后出现了符号语言和汇编语言等程序设计语言,它们比机器语言虽前进了一步,但仍属计算机低级语言,编写稈序效率很低。程序设计语言发展的第三阶段是计算机高级程序设计语言的诞生。随着1954年第一种高级语言FORTRANI语言的问世,计算机高级程序设计语言从此以后如雨后春笋,不断涌现。作为高级程序设计语言的一种发展,H前流行的血向对彖稈序设计语言是对传统的面向过程程序设计语言的一种挑战。1.4翻译有两种方式:一种是编译方式,另一种是解释方式。编译方式是先将源稈序翻译成汇编语言稈序或机器语言稈序(称

2、为目标程序),然示再执行它。它一般包括词法分析稈序、语法分析程序、语义分析稈序、屮间代码生成程序、代码优化稈序、目标代码生成稈序、表格处理程序和出错处理稈序。编译过程可由一遍或多遍完成。和编译方式不同,解释方式并不先产生目标程序然后再执行Z,而是对源程序边翻译边执行。二者的根本区别在于是否生成目标代码,而不是是否进行翻译。1・5编译程序包括以下主要组成部分:%1词法分析稈序(又称扫描器)。依据语言词法规则,分析由字符组成的源稈序,把它识别为一个一个具有独立意义的报小语法单位,即“单词”,并识别出与其相关的属性(如是标识符,是界限符,还是数,等等)以供其他部分使用。%1语法分析稈序。依据语言的

3、语法规则,逐一地分析词法分析时得到的单词,以确定它们是怎样组成说明和语句的,以及说明和语旬是怎样组成程序的。分析时如发现有不合语法规则的地方,便把这些出错的地方及出错性质打印输出报告给程序员;如无语法错误,则以另一种内部表示(如语法分析树或其他屮间表示)给出正确的语法结构,供下一阶段分析使用。%1语义分析和屮间代码生成程序。依据语言的语义规则对语法分析得到的语法结构进行静态语义检杏(确定类型、类型和运算合法性检杳、识别含义与相应的语义处理及其他一些静态语义检杳),并用另一种内部形式表示出来,或者亩接用目标语言表示出来。%1代码生成程序。如果语义分析时把源程序表不成内部形式而不是表示成目标指令

4、,则由木部分完成从内部形式到目标指令的生成T作。如果语义分析时,已直接生成目标指令,则无需做代码生成工作。如果目标代码是:(a)绝对指令代码,则目标代码可立即运行;(b)汇编指令代码,则需要经汇编Z后才可运行;(c)可重新定位的指令代码,则必须借助于一个连接装配程序把备个目标模块连接在一起,确定稈序变量(或常数)在主存屮的位置,确定装入内存屮指定的起始地址,使之成为一个可以独立运行的绝对指令代码程序。%1代码优化程序。依据程序的等价变换规则,尽量压缩目标程序运行所需的时间和所占的存储空间,以提高目标程序的质量。1.6编译过稈往往分为前端和后端。前端包括词法分析、语法分析、语义分析(或屮间代码

5、生成)和屮间代码优化,主要依赖于源稈序;后端包括目标代码生成,依赖于计算机硬件系统和机器指令系统。这种组织方式,便于编译程序的移植,若要将编译程序移植到不同类型的机器,只需修改编译程序的后端即可。根据编译程序在完成翻译任务的过稈屮对源稈序或其屮间语言程序扫描的遍数,可以把编译稈序分为单遍扫描的编译程序(只需扫描一遍)和多遍扫描的编译程序(需扫描多遍)。在单遍扫描的编译程序屮,往往以语法分析程序为中心,词法分析程序作为语法分析的一个子程序,当语法分析需要一个新单词时,便调用词法分析程序,当它识别出一个语法成分时,就调用语义分析程序。典世的编译程序结构如下图所示。1.7高级语言具有自编译性,即可

6、用这个语言来编写自己的编译程序。具有自编译性的高级语言可采用自展技术构造自身的编译程序。所谓自展技术,简单来说就是把源语言L分解成一个核心部分5与扩充部分b,b,…,Ln,使得对核心部分5进行一次或多次扩充Z后得到源语言L。一个具有自编译性的高级语言在宿主机上的编译程序可以移植到目标机上。在编译程序自动化进程屮,H前丿、'、Z川最多的是词法分析程序生成器和语法分析程序生成器。L8我们将有助于减轻编写翻译程序(包括编译稈序、汇编稈序、解释稈序)工作的任何软件系统或工具包,统称为翻译程序编写系统(TWS),产生式语言的编译程序和自动分析算法的构造程序都是TWSoTWS可分为三类。第一类为白动产生

7、编译稈序的“编译程序的编译程序”。第二类为面向语法的符号加工程序。第三类是由可扩充语言组成的集合。1.9并行编译程序的故大特点是其具冇的并行处理功能。与传统的串行编译稈序只需将源稈序转化为目标程序不同,并行编译程序要把串行的源程序或尚未充分并行化的并行源程序,自动转换成并行计算机系统上运行的并行目标程序或它所能接收的并行源程序。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。