《编译的基本概念》PPT课件.ppt_第1页
《编译的基本概念》PPT课件.ppt_第2页
《编译的基本概念》PPT课件.ppt_第3页
《编译的基本概念》PPT课件.ppt_第4页
《编译的基本概念》PPT课件.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,编译原理,2,第一章 编译的基本概念,3,基本概念,术语: 语言和程序 翻译程序和翻译方式 宿主机与目标机 编译过程概述 编译程序的逻辑结构 编译程序的前端、后端、遍 编译技术的应用与发展,4,语言:符合一定规则(文法)的程序的集合 低级语言 字位码、机器语言、汇编语言 特点:与特定的机器有关,功效高,但使用复杂、繁 琐、费时、易出错 高级语言 Fortran、Pascal、C、JAVA等 特点:不依赖具体机器,移植性好、对用户要求低、易 使用、易维护等,1.1 术语,5,1.1 术语,程序:一组指令组成的序列,称为程序 源程序:用汇编语言或高级语言编写的程序称为源程序 目标程序:用目标语

2、言所表示的程序,可以是介于源语言和 机器语言之间的“中间语言”,可以是某种机器 的机器语言,也可以是某机器的汇编语言。 翻译程序:将源程序转换为目标程序的程序称为翻译程序。 它是指各种语言的翻译器,包括汇编程序和编译 程序,是汇编程序、编译程序以及各种变换程序 的总称,6,源程序、翻译程序、目标程序三者关系,源程序,翻译程序,目标程序,SOURCE PROGRAM,TRANSLATER,OBJECT PROGRAM,即源程序是翻译程序的输入,目标程序是翻译程序的输出,1.1 术语,7,汇编程序 若源程序用汇编语言书写,经过翻译程序得到用机器语言表示的程序,这时的翻译程序就称之为汇编程序,这种翻

3、译过程称为“汇编”。 编译程序 若源程序是用高级语言书写,经加工后得到目标程序,上述翻译过程称“编译,汇编程序与编译程序都是翻译程序,主要区别是加工对象的 不同。由于汇编语言格式简单,常与机器语言之间有一一对 应的关系。汇编程序所要做的翻译工作比编译程序简单的多,1.1 术语,8,源程序的编译和运行,编译或汇编阶段 运行阶段,1.1 术语,9,工作过程,解释程序:对源程序边解释,边执行的程序。类似于口译, 不生成目标代码,特点:边解释,边执行; 不生成目标代码; 比较简单,但速度慢,1.1 术语,10,1.1 术语,工作过程,编译程序:把源程序翻译成等价的目标程序(汇编语言,机器语言)。 类似

4、于笔译,源程序,编译程序,目标程序,输出数据,目标程序+运行程序,输入数据,11,编译程序的特点: 1、翻译过程是一种功能上等价的翻译; 2、输出结果是低级语言; 3、编译程序与具体的语言和机器有关; 4、被编译的源程序是被加工的对象, 目标程序是加工的结果; 5、比较复杂,效率高,1.1 术语,12,1.1 术语,宿主机:运行编译程序的计算机。 目标机: 运行编译程序所产生目 标代码的计算机,13,编译程序的分类 1、诊断编译程序 用于帮助程序开发和调试的编译程序。 2、优化编译程序 着重于提高目标代码效率的编译程序。 3、交叉编译程序 如果一个编译程序产生不同于其宿主机的 机器代码。 4、

5、可变目标编译程序 如果不需重写编译程序中与机器无关的部 分就能改变目标机,1.1 术语,14,编译过程是将高级语言程序翻译为等价的目标程序的过程,翻译外文资料: 1、能识别出句子中的每个单词; 2、分析句子的语法结构; 3、根据句子的含义进行初步翻译; 4、对译文进行修饰; 5、写出最后的译文,1.2 编译过程,15,1.2 编译过程,文献翻译与编译过程的比较,16,词法分析,语法分析,语义分析及中间代码生成,代码优化,目标代码生成,习惯上是将编译过程划分为5个基本阶段,1.2 编译过程,17,1.2 编译过程,单词:是语言的基本语法单位 保留字(或称基本字,如:if、else、while)

6、标识符(如:max、min、str) 常数 (如:12、6.8、a) 运算符(如:+、-、*、/) 界符 (;、(,任务:对源程序的字符串流进行扫描和分解,识别并输出 一个个单词符号,及其与此相关的属性(保留字, 标识符,常数,运算符,界符,一、词法分析,例:if B1 = 13 then X := Y + 1 (20个字符) | | | | | | | | | | 基 标 运 常 基 标 运 标 运常 本 识 算 数 本 识 算 识 算数 字 符 符 符 号 符 符 符,18,1.2 编译过程,单词符号内部的表示: 二元式,词法分析依循的规则: 描述词法规则的有效工具是正规文法和正规式,19

7、,任务:根据语法规则(即语言的文法),把单词符号串分解成各类 语法成分(如表达式、语句、函数等),分析其源程序的结 构,判别是否为相应程序语言中的合法程序,二、语法分析(编译程序的核心,1.2 编译过程,语法分析依循的规则: 描述语法规则的有效工具是上下文无关文法,20,1.2 编译过程,上下文无关文法: :=“=” :=“+” | “*” :=“(”“)” | | ,21,语法分析的结果-语法树,1.2 编译过程,赋值语句,标识符,表达式,表达式,标识符,实数,表达式,Z,X,Y,0.618,表达式,表达式,Z X + 0.618 *Y,标识符,22,1.2 编译过程,任务:规定各语法成分的

8、含义和功能,即规定它们的属性或 在执行时应进行的运算和操作,进行相应的语义检 查;产生中间代码,三、语义分析及中间代码生成,静态: 分析语法成份的含义,进行语义上的正确性检查。 动态: 根据相应语义,生成中间代码(介于源语言和目标语言之间的中间语言形式,23,生成中间代码的目的: 1、利于代码优化 2、利于目标代码的移植,中间代码的形式: 三元式、四元式、逆波兰表示,1.2 编译过程,语义分析依循的规则: 为文法的每一个产生式配备计算属性的计算规则,24,1.2 编译过程,其中t1、t2、t3为编译程序引入的临时工作单元,例:y=x+r*6,25,1.2 编译过程,任务:对中间代码进行加工变换

9、,以期在最后阶段产生 出更为高效(省时间、空间)目标程序。 优化包括:局部优化、全局优化、循环优化,四、优化,26,1.2 编译过程,例:y=x+r*6,27,1.2 编译过程,五、目标代码生成,任务:把优化后的中间代码变换成目标机的低级语言代码,movr, R1 mul#6.0, R1 movx, R2 addR1, R2 movR2, y,28,编译过程小结,1.2 编译过程,29,按逻辑功能不同,可将编译过程划分为五个基本阶段,与此相对应,我们将实现整个编译过程的编译程序划分为五个逻辑阶段(即五个逻辑子过程,每个阶段中都要有: 符号表管理和错误处理,1.3 编译程序的逻辑结构,30,诊察

10、错误,并能报告用户错误性质和位置。 出错处理能力的优劣是衡量编译程序质量好坏的一个重要指标,填表:把源程序中的信息和编译过程中所产生的信 息登记在表格中。 查表:在随后的编译过程中同时又要不断的查找这 些表格中的信息,符号表管理,错误处理,1.3 编译程序的逻辑结构,31,典型的编译程序具有7个逻辑部分,S.P,O.P,1.3 编译程序的逻辑结构,32,根据编译程序各部分功能,将编译程序分成前端和后端,前端:通常将与源程序有关的编译部分称为前端分析部分。 包括:词法分析、语法分析、语义分析、中间代码生成 特点:与源语言有关 后端:与目标机有关的部分称为后端综合部分。 包括:代码优化、代码生成

11、特点:与目标机有关,编译程序的前端和后端,1.4 编译程序的前端、后端、遍,33,第一遍 第二遍,S.P 中间形式1,S.P 中间形式2,C2,C1,S.P,O.P,上一遍的结果是下一遍的输入,最后一遍生成目标程序,对源程序(包括源程序中间形式)从头到尾扫描一次,并做有关的加工处理,生成新的源程序中间形式或目标程序,通常称之为一遍,1.4 编译程序的前端、后端、遍,34,一遍扫描即可完成整个编译工作的称为一遍扫描编译程序,遍的划分视具体情况而定(内存的大小、源语言的繁简、目标程序质量的高低,优点: 1、减少对内存容量的要求 2、编译程序结构清晰、各遍功能独立、相互联系简单,缺点: 增加读写中间

12、文件的次数,降低效率,1.4 编译程序的前端、后端、遍,35,应用:大部分软件工具的开发,都要使用编译技术和方法,高级语言的翻译工具,自然语言理解 编辑器,信息检索,模式识别 软件测试工具 静态分析器:不可能执行的代码、定义后未引用的变量 动态测试工具:运行后与期望结果比较 程序理解工具:确定调用关系,画出流程图 排版、绘图系统,1.5 编译技术的应用与发展,36,并行编译技术 目的:提高并行计算机体系结构的性能,超大规模计算 的日益增长的需求。两种实现方法: 利用重构技术将串行程序并行化 直接编写并行程序 交叉编译技术 由于目标机指令系统与宿主机的指令系统不同,编译时 将应用程序的源程序在宿主机上生成目标机代码,称为 交叉编译,发展,1.5 编译技术的应用与发展,37,1.判断下面的陈述是否正确。 (1)高级语言程序到低级语言程序的转换是基于功能的 等价变换; (2)含有优化部分的编译程序的执行效率高; (3)因为编译程序和解释程序具有不同的功能,所以它 们的实现技术也完全不同; (4)编译程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论