




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 编译程序概论,2019/7/2,第1章 编译原理概论,Page 2,第1章 编译原理概论,学习目标 掌握:编译的各个阶段 理解:编译程序的概念 了解:解释器,编译程序的结构和组合,2019/7/2,第1章 编译原理概论,Page 3,第1章 编译原理概论,编译是什么? 编译有什么用/为什么需要编译? 编译怎么实现这个功能/作用?,2019/7/2,第1章 编译原理概论,Page 4,第1章 编译原理概论,回想使用VC 6.0运行程序的过程: 编译 链接 执行,检查词法是否正确,检查语法是否正确,将正确的高级语言生成机器能理解的目标代码,机器语言 汇编语言,2019/7/2,第1章 编译原理概论,Page 5,第1章 编译原理概论,1.1 什么是编译程序 1.2 编译过程概述 1.3 编译程序的结构 1.4 编译阶段的组合 1.5 编译技术和软件工具,2019/7/2,第1章 编译原理概论,Page 6, 1.1 什么是编译程序,1、翻译程序: 2、编译程序: 3、汇编程序:,Fortran, Pascal, C,汇编语言,机器语言,2019/7/2,第1章 编译原理概论,Page 7, 1.1 什么是编译程序,4高级语言程序的处理过程,(1)编译的方式,由“编译程序”把源程序全部翻译成二进制代码,可反复执行。,2019/7/2,第1章 编译原理概论,Page 8, 1.1 什么是编译程序,4高级语言程序的处理过程,(2)解释的方式,一句一句地读进高级语言源程序; 边翻译边执行; 翻译完成即得出执行结果; 下次再执行时重新翻译。,2019/7/2,第1章 编译原理概论,Page 9, 1.1 什么是编译程序,4高级语言程序的处理过程,(3)解释器(interpreter)与编译器,共同点:都是语言的一个实现系统 不同点:,解释器是源程序的一个执行系统,工作结果得到源程序的执行结果; 编译器是源程序的转换系统,工作结果得到等价于源程序的某种目标程序,2019/7/2,第1章 编译原理概论,Page 10, 1.1 什么是编译程序,5编译程序的发展 以机器语言、汇编语言为工具 以高级语言为工具 编译程序自动生成工具 自编译技术 并行编译技术,2019/7/2,第1章 编译原理概论,Page 11, 1.2 编译过程,2019/7/2,第1章 编译原理概论,Page 12, 1.2 编译过程,1、词法分析阶段 从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(Token)。 单词:语法上具有独立意义的最小单位(标识符,基本字,算符,界符等) 识别规则:词法规则,在数中出现非数字字符 标识符不是以字母和下划线打头,词法错误, 1.2 编译过程,2019/7/2,第1章 编译原理概论,Page 13,词法错误,2019/7/2,第1章 编译原理概论,Page 14, 1.2 编译过程,例:源程序 begin var sum,first,count:real; sum:=first+count*10 end.,2019/7/2,第1章 编译原理概论,Page 15, 1.2 编译过程,2、语法分析阶段 任务:在词法分析的基础上,将单词序列分解成各类语法短语,表示成语法树。 识别规则:语法规则。 判断输入串是否构成一个语法上正确的程序,并生成语法树。,else没有匹配的if 表达式缺少分号结尾,语法错误, 1.2 编译过程,2019/7/2,第1章 编译原理概论,Page 16,语法错误,2019/7/2,第1章 编译原理概论,Page 17, 1.2 编译过程,例:赋值语句 sum:=first+count*10 赋值语句规则 :=“:=” :=“+” :=“*” :=“(”“)” := := :=,2019/7/2,第1章 编译原理概论,Page 18, 1.2 编译过程,3、语义分析阶段 任务:审查源程序有无语义错误,为代码生成阶段收集类型信息。 识别规则:语义规则 识别结果进行类型转换或报告类型错误 类型审查(静态语义): 上下文相关性 类型匹配 类型转换,数组下标越界 声明和使用的函数没有定义 零作除数,语义错误, 1.2 编译过程,2019/7/2,第1章 编译原理概论,Page 19,语义错误,2019/7/2,第1章 编译原理概论,Page 20, 1.2 编译过程,例:源程序:sum := first + count * 10经语义分析发现整数10必须转换成实数才能与实形变量count相乘。因此在分析树上增加一语义处理结点,2019/7/2,第1章 编译原理概论,Page 21, 1.2 编译过程,4、中间代码生成 从这里开始真正做翻译工作 任务:把源程序翻译成中间代码(如四元式) 四元式的形式: (运算符,运算对象1,运算对象2,结果) 例: 源程序:sum := first + count * 10 翻译成四元式 (1) (inttoreal 10 - T1 ) (2) (* count T1 T2) (3) (+ first T2 T3) (4) (:= T3 - sum),2019/7/2,第1章 编译原理概论,Page 22, 1.2 编译过程,5、代码优化 任务:对中间代码进行等价变换,以便生成更高效的目标代码,即省时间和省空间。 举例: (1) (inttoreal 10 - T1 ) (2) (* count T1 T2) (3) (+ first T2 T3) (4) (:= T3 - sum) 简化后: (* count 10.0 T1) (+ first T1 sum),2019/7/2,第1章 编译原理概论,Page 23, 1.2 编译过程,6、目标代码生成 任务:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码,它的工作与硬件系统和指令含义有关.,例如: (* count 10.0 T1 ) (+ first T1 sum),生成汇编代码如下: MOVF count, R2 MULF #10.0, R2 MOVF first, R1 ADDF R1, R2 MOV R1, sum,源程序: sum := first + count * 10,2019/7/2,第1章 编译原理概论,Page 24, 1.3 编译程序的结构,2019/7/2,第1章 编译原理概论,Page 25, 1.3 编译程序的结构,表格管理和出错处理 表格保留编译过程中源程序的各种信息 出错处理处理编译过程中发现的源程序错误(词法错误、语法错误、语义错误),2019/7/2,第1章 编译原理概论,Page 26, 1.4 编译阶段的组合,1分析与综合 分析阶段: 词法分析、语法分析、语义分析 只对程序进行识别和检查,未作实质翻译。 综合阶段: 中间代码生成、代码优化、目标代码生成 对源程序进行翻译,生成目标代码。,2019/7/2,第1章 编译原理概论,Page 27, 1.4 编译阶段的组合,2前端与后端 前端: 词法分析、语法分析、语义分析和中间代码的生成、中间代码优化。 前端的工作只依赖于源语言,与机器无关。 后端: 目标代码生成。 后端工作依赖于目标机,而与源语言无关(只与中间代码有关)。,2019/7/2,第1章 编译原理概论,Page 28, 1.4 编译阶段的组合,3一遍与多遍 一个编译程序可由一遍、两遍或多遍完成。 “遍”是对源程序或中间语言程序从头到尾扫视并完成规定任务的过程。 影响分遍的因素:源语言结构,目标机资源,开发人员编程习惯。,2019/7/2,第1章 编译原理概论,Page 29, 1.5 编译技术和软件工具,1、语言的结构化编辑器 引导用户在语言的语法制导下编制程序。 2、语言程序的调试工具 帮助编程人员检查程序的算法和运行结果是否符合原意, 与语法分析和语义处理关系密切。 3、语言程序的测试工具 静态分析器:检查变量的定值与引用关系。 动态测试器:用测试用例记录程序运行时实际路径。,2019/7/2,第1章 编译原理概论,Page 30, 1.5 编译技术和软件工具,4高级语言之间的转换工具 把一种高级语言转换成另一种高级语言。 汇编语言转换成高级语言(反编译)。 5并行编译技术 并行机和多处理机的发展要求软件并行处理; 运用重构技术从串行程序中分析出并行成分; 用并行语言编写并行处理程序。,2019/7/2,第1章 编译原理概论,Page 31,小结,内容: 什么是编译程序 编译的各个阶段 为什么要学习编译程序 重点: 对编译程序的功能和结构有总体认识 理解编译程序各个阶段的逻辑关系 以及他们怎样作为一个整体完成编译任务,2019/7/2,第1章 编译原理概论,Page 32,练习,1、什么是翻译程序,编译程序,汇编程序?它们之间是什么关系?,2019/7/2,第1章 编译原理概论,Page 33,练习,1、翻译程序: 2、编译程序: 3、汇编程序:,2019/7/2,第1章 编译原理概论,Page 34,练习,2、填空,在词法分析的基础上,将单词序列分解成各类语法短语。( ) 把源程序翻译成中间代码。 ( ) 从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 ( ) 把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 ( ) 对中间代码进行等价变换,以便生成更高效的目标代码。 ( ) 审查源程序有无语义错误,为代码生成阶段收集类型信息。 ( )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小红帽唱歌课教学课件
- it项目管理教学课件7
- 机电基础测量知识培训班课件
- 2025年安全生产责任清单重点练习题
- 2025年监察员岗面试模拟题
- 2025年宠物摄影摄像师基础笔试题及答案集
- 读后感课件和时间赛跑
- 2025年中级测量员鉴定考试重点集
- 2025年碳汇管理中药招聘笔试模拟集
- 读书感悟课件
- 红色国潮风纳西族介绍模板
- 祖遗户遗产继承协议书范文
- 第二章 处方调剂课件
- GB/T 16288-2024塑料制品的标志
- 山岳型旅游景区安全管理规范DB41-T 1941-2020
- 某部营房零星改造工程投标方案(技术标)
- APQC跨行业流程分类框架(PCF)V7.4版-2024年8月21日版-雷泽佳编译
- 高中生物必修二试卷加详细答案
- DL∕T 5210.2-2018 电力建设施工质量验收规程 第2部分:锅炉机组
- JTT 203-2014 公路水泥混凝土路面接缝材料
- 普通地质学完整版课件
评论
0/150
提交评论