编译的基本概念.ppt

上传人:牧羊曲112 文档编号:6231218 上传时间:2023-10-08 格式:PPT 页数:38 大小:228KB
返回 下载 相关 举报
编译的基本概念.ppt_第1页
第1页 / 共38页
编译的基本概念.ppt_第2页
第2页 / 共38页
编译的基本概念.ppt_第3页
第3页 / 共38页
编译的基本概念.ppt_第4页
第4页 / 共38页
编译的基本概念.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《编译的基本概念.ppt》由会员分享,可在线阅读,更多相关《编译的基本概念.ppt(38页珍藏版)》请在三一办公上搜索。

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)标识符(如:max、min、str)常

6、数(如: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 编译过程,任务:对中间代码进行加工变换,以期在最后阶段产生 出更为高效(省时间、空间)目标程序。优化包括:局部优化、全局优化、循环优化.,四、优化,2

9、6,1.2 编译过程,例:y=x+r*6,27,1.2 编译过程,五、目标代码生成,任务:把优化后的中间代码变换成目标机的低级语言代码。,movr,R1mul#6.0,R1movx,R2addR1,R2movR2,y,28,编译过程小结:,1.2 编译过程,29,按逻辑功能不同,可将编译过程划分为五个基本阶段,与此相对应,我们将实现整个编译过程的编译程序划分为五个逻辑阶段(即五个逻辑子过程)。,每个阶段中都要有:符号表管理和错误处理,1.3 编译程序的逻辑结构,30,诊察错误,并能报告用户错误性质和位置。出错处理能力的优劣是衡量编译程序质量好坏的一个重要指标。,填表:把源程序中的信息和编译过程

10、中所产生的信 息登记在表格中。查表:在随后的编译过程中同时又要不断的查找这 些表格中的信息。,符号表管理,错误处理,1.3 编译程序的逻辑结构,31,典型的编译程序具有7个逻辑部分,S.P,O.P,1.3 编译程序的逻辑结构,32,根据编译程序各部分功能,将编译程序分成前端和后端,前端:通常将与源程序有关的编译部分称为前端分析部分。包括:词法分析、语法分析、语义分析、中间代码生成 特点:与源语言有关后端:与目标机有关的部分称为后端综合部分。包括:代码优化、代码生成 特点:与目标机有关,编译程序的前端和后端,1.4 编译程序的前端、后端、遍,33,第一遍 第二遍,S.P中间形式1,S.P中间形式

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

12、,自然语言理解 编辑器,信息检索,模式识别 软件测试工具 静态分析器:不可能执行的代码、定义后未引用的变量 动态测试工具:运行后与期望结果比较 程序理解工具:确定调用关系,画出流程图 排版、绘图系统,1.5 编译技术的应用与发展,36,并行编译技术 目的:提高并行计算机体系结构的性能,超大规模计算 的日益增长的需求。两种实现方法:利用重构技术将串行程序并行化直接编写并行程序 交叉编译技术 由于目标机指令系统与宿主机的指令系统不同,编译时 将应用程序的源程序在宿主机上生成目标机代码,称为 交叉编译。,发展:,1.5 编译技术的应用与发展,37,1.判断下面的陈述是否正确。(1)高级语言程序到低级语言程序的转换是基于功能的 等价变换;(2)含有优化部分的编译程序的执行效率高;(3)因为编译程序和解释程序具有不同的功能,所以它 们的实现技术也完全不同;(4)编译程序和解释程序的根本区别在于解释程序对源 程序并没有真正进行翻译;(5)无论一遍扫描的编译器还是多遍扫描的编译器都要 对源程序扫描一遍。,课堂练习,答案:(1)T(2)F(3)F(4)F(5)T,38,答案:(1)语法(2)语义(3)词法,请指出下列错误信息是编译的哪个阶段报告的:(1)else没有匹配的if;(2)使用的函数没有定义;(3)在数中出现非数字字符。,课堂练习,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号