编译原理[890页]课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理[890页]课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 890页 编译 原理 890 课件
- 资源描述:
-
1、2022-8-612022-8-62使用说明使用说明 课程教学需要瞄准所在专业的具体培养目标,需课程教学需要瞄准所在专业的具体培养目标,需要体现教师和学生的特点。本电子讲稿是要体现教师和学生的特点。本电子讲稿是资料性资料性的的,为大家使用我们编著的教材组织教学提供讲,为大家使用我们编著的教材组织教学提供讲稿的制作基础。请读者注意:稿的制作基础。请读者注意:这份资料覆盖教材的全部内容,供大家选用,但由于这份资料覆盖教材的全部内容,供大家选用,但由于学时限制,大家需要根据学生的培养需求选取适当的学时限制,大家需要根据学生的培养需求选取适当的内容内容 在制作中,我们适当考虑了讲课的需要,包含了作者在
2、制作中,我们适当考虑了讲课的需要,包含了作者的一些理解和讲法,但只能参考,由于面对的学生、的一些理解和讲法,但只能参考,由于面对的学生、讲授的环境等不同,直接使用会影响教学效果讲授的环境等不同,直接使用会影响教学效果2022-8-63使用说明使用说明 编译原理课程是计算机专业教育很重要的专业技编译原理课程是计算机专业教育很重要的专业技术基础课,更多地体现在其所含的学生终生受用术基础课,更多地体现在其所含的学生终生受用的计算机问题求解的典型思想和方法,所含的知的计算机问题求解的典型思想和方法,所含的知识是载体,利用好这个载体,还靠大家努力识是载体,利用好这个载体,还靠大家努力 课程教学是与教师和
3、学生紧密相关的,甚至可以课程教学是与教师和学生紧密相关的,甚至可以说大纲、教材只是一个框架和素材,课堂教学这说大纲、教材只是一个框架和素材,课堂教学这部剧如何展开,还依赖于集导演和演员于一身的部剧如何展开,还依赖于集导演和演员于一身的教师,讲课教师,讲课PPT的制作是必不可少的的制作是必不可少的“排练工作排练工作”之一之一 非常希望听到大家的建议和意见,祝大家在编译非常希望听到大家的建议和意见,祝大家在编译课程的教学中做出更多的探索课程的教学中做出更多的探索2022-8-64编译原理编译原理Compiler Principles and Techniques 蒋宗礼蒋宗礼 姜守旭姜守旭2022
4、-8-65课程目的和基本要求课程目的和基本要求 课程性质课程性质技术基础技术基础 基础知识要求基础知识要求 高级程序设计语言,数据结构与算法,形式语高级程序设计语言,数据结构与算法,形式语言与自动机言与自动机 主要特点主要特点 既有理论,又有实践既有理论,又有实践 面向系统设计面向系统设计 涉及程序的自动生成技术涉及程序的自动生成技术2022-8-66课程目的和基本要求课程目的和基本要求本专业人员本专业人员4 4种基本的专业能力种基本的专业能力1.1.计算思维能力计算思维能力2.2.算法的设计与分析能力算法的设计与分析能力3.3.程序设计和实现能力程序设计和实现能力4.4.计算机软硬件系统的认
5、知、分析、设计与应用能力计算机软硬件系统的认知、分析、设计与应用能力计算思维能力计算思维能力1.1.逻辑思维能力和抽象思维能力逻辑思维能力和抽象思维能力2.2.构造模型对问题进行形式化描述构造模型对问题进行形式化描述3.3.理解和处理形式模型理解和处理形式模型2022-8-67课程目的和基本要求课程目的和基本要求 知识知识掌握编译程序的总体结构、编译程序各个组成部分的掌握编译程序的总体结构、编译程序各个组成部分的任务、编译过程各个阶段的工作原理任务、编译过程各个阶段的工作原理、编译过程各、编译过程各个阶段所要解决的问题及其采用的方法和技术个阶段所要解决的问题及其采用的方法和技术 能力能力1.掌
6、握程序变换基本概念、问题描述和处理方法掌握程序变换基本概念、问题描述和处理方法 2.增强理论结合实际能力增强理论结合实际能力3.修养修养“问题、形式化描述、计算机化问题、形式化描述、计算机化”的问题求解的问题求解过程过程 4.使学生在系统级上认识算法和系统的设计,培养系统使学生在系统级上认识算法和系统的设计,培养系统能力能力2022-8-68主要内容主要内容 1.引论引论2.高级语言及其文法高级语言及其文法3.词法分析词法分析4.自顶向下的语法分析自顶向下的语法分析5.自底向上的语法分析自底向上的语法分析6.语法制导翻译与属性文法语法制导翻译与属性文法7.语义分析与中间代码生成语义分析与中间代
7、码生成8.符号表管理符号表管理9.运行时的存储组织运行时的存储组织10.代码优化代码优化11.代码生成代码生成2022-8-69教材及主要参考书目教材及主要参考书目1.蒋宗礼,姜守旭蒋宗礼,姜守旭.编译原理编译原理.北京:高等教育出北京:高等教育出版社,版社,2010年年2月月 2.Alfred Aho ect.,Compilers:Principles,Techniques,and Tools(Second Edition),北北京京:人民邮电出版社人民邮电出版社,Pearson Education出出版集团版集团,2008.2.3.Alfred Aho ect.,Compilers:Pri
8、nciples,Techniques,and Tools,北京北京:人民邮电出版人民邮电出版社社,Pearson Education出版集团出版集团,2002.2.2022-8-610第第1章章 引论引论1.1 程序设计语言程序设计语言1.2 程序设计语言的翻译程序设计语言的翻译1.3 编译程序的总体结构编译程序的总体结构1.4 编译程序的组织编译程序的组织1.5 编译程序的生成编译程序的生成1.6 本章小结本章小结2022-8-6111.1 程序设计语言程序设计语言 机器语言机器语言(Machine Language)与汇编语言与汇编语言(Assemble Language)0、1代码与助记
9、符:更接近于计算机硬件指令系统的代码与助记符:更接近于计算机硬件指令系统的工作工作 高级语言高级语言(High Level Language)其表示方法更接近于待解问题的表示方法其表示方法更接近于待解问题的表示方法 定义数据、描述运算、控制流程、传输数据定义数据、描述运算、控制流程、传输数据 如:如:C、FORTRAN、PASCAL、C+、JAVA、SQL(数据定数据定义、数据操作义、数据操作)命令语言命令语言(Command Language)控制系统的工作控制系统的工作以功能封装为特征以功能封装为特征 如如UNIX上的上的shell1011 1000 0010 1011 0001 0101
10、(B82B15)1000 1110 1101 1000(8ED8)1010 0001 0000 0000 0000 0000(A10000)1000 1011 0001 1110 0000 0010 0000 0000(8B1E0200)1011 1001 0000 0000 0000 0000(B90000)0000 0011 1100 1000(03C8)0000 0011 1100 1011(03CB)1000 1011 0000 1110 0000 0100 0000 0000(8B0E0400)1011 1000 0000 0000 0100 1100(B8004C)1100 110
11、1 0010 0001(CD21)int mainint a,b,c;a=1234h;b=5678h;c=a+b;return 0;assume cs:code,ds:datadata segmentdw 1234h,5678hdata endscode segmentstart:mov ax,datamov ds,ax mov ax,ds:0mov bx,ds:2mov cx,0add cx,axadd cx,bxmov cx,ds:4mov ax,4c00hint 21h code endsend start 程序设计语言的分类程序设计语言的分类 强制式(命令式)语言强制式(命令式)语言(
12、Imperative Language)通过一系列可执行的运算及运算的次序来描述计通过一系列可执行的运算及运算的次序来描述计算过程的语言算过程的语言 FORTRAN(段结构段结构)、BASIC、Pascal(嵌套结构嵌套结构)、C 程序的层次性和抽象性不高程序的层次性和抽象性不高程序设计语言的分类程序设计语言的分类 申述式语言(申述式语言(Declarative Language)着重描述要处理什么,而非如何处理的非命令式着重描述要处理什么,而非如何处理的非命令式语言语言 函数函数(应用应用)式语言式语言(Functional Language)基本运算单位是函数,如基本运算单位是函数,如LI
13、SP、ML 逻辑式逻辑式(基于规则基于规则)语言语言(Logical Language)基本运算单位是谓词,如基本运算单位是谓词,如Prolog,Yacc程序设计语言的分类程序设计语言的分类 面向对象语言面向对象语言(Object-Oriented Language)以对象为核心,如以对象为核心,如Smalltalk、C+、Java、Ada(程序包程序包)具有识认性(对象)、类别性(类)、多态性和具有识认性(对象)、类别性(类)、多态性和继承性继承性1.2 程序设计语言的翻译程序设计语言的翻译翻译程序翻译程序(Translator)将某一种语言描述的程序将某一种语言描述的程序(源程序源程序So
14、urce Program)翻译成等价的另一种语言描述的程翻译成等价的另一种语言描述的程序序(目标程序目标程序Object Program)的程序的程序翻译程序翻译程序源程序源程序目标程序目标程序(*.C/*.PAS)(*.OBJ/*.EXE)2022-8-6161.2 程序设计语言的翻译程序设计语言的翻译 解释程序解释程序(Interpreter)一边解释一边执行的翻译程序一边解释一边执行的翻译程序 口译与笔译(单句提交与整篇提交)口译与笔译(单句提交与整篇提交)源程序源程序输入数据输入数据计算结果计算结果2022-8-6171.2 程序设计语言的翻译程序设计语言的翻译 编译程序编译程序(Co
15、mpiler)将源程序完整地转换成机器语言程序或汇编将源程序完整地转换成机器语言程序或汇编语言程序,然后再处理、执行的翻译程序语言程序,然后再处理、执行的翻译程序 高级语言程序高级语言程序汇编汇编/机器语言程序机器语言程序源程序源程序目标程序目标程序2022-8-6181.2 程序设计语言的翻译程序设计语言的翻译SPCompilerS-SourceO-ObjectOPP-ProgramInputRSRS-Run Sys.Output2022-8-6191.2 程序设计语言的翻译程序设计语言的翻译 其它翻译程序:其它翻译程序:汇编程序汇编程序(Assembler)交叉汇编程序交叉汇编程序(Cro
16、ss Assembler)反汇编程序(反汇编程序(Disassembler)交叉编译程序(交叉编译程序(Cross Compiler)反编译程序(反编译程序(Decompiler)可变目标编译程序(可变目标编译程序(Retargetable Compiler)并行编译程序(并行编译程序(Parallelizing Compiler)诊断编译程序(诊断编译程序(Diagnostic Compiler)优化编译程序(优化编译程序(Optimizing Compiler)2022-8-6201.2 1.2 程序设计语言的翻译程序设计语言的翻译汇总汇总解释程序数据结果编译系统机器语言程序机器语言程序机
17、器语言程序汇编语言程序高级语言程序汇编语言程序汇编语言程序高级语言程序高级语言程序汇编程序反汇编程序编译程序反编译程序汇编程序反汇编程序编译程序反编译程序汇编程序编译程序交叉汇编程序交叉编译程序可变目标编译程序图1.5 主要翻译程序汇总运行系统2022-8-6211.3 1.3 编译程序总体结构编译程序总体结构2022-8-6221、词法分析、词法分析 例:例:sum=(10+20)*(num+square);结果结果(标识符,标识符,sum)(赋值号,赋值号,=)(左括号,左括号,()(整常数,整常数,10)(加号,加号,+)(整常数,整常数,20)(右括号,右括号,)(乘号,乘号,*)(左
18、括号,左括号,()(标识符,标识符,num)(加号,加号,+)(标识符,标识符,square)(右括号,右括号,)(分号,分号,;)2022-8-6231、词法分析、词法分析 词法分析由词法分析器词法分析由词法分析器(Lexical Analyzer)完完成,词法分析器又称为扫描器成,词法分析器又称为扫描器(Scanner)词法分析器从左到右扫描组成源程序的字符词法分析器从左到右扫描组成源程序的字符串,并将其转换成单词串,并将其转换成单词(记号记号token)串;同串;同时要:查词法错误,进行标识符登记时要:查词法错误,进行标识符登记符符号表管理号表管理 输入:字符串输入:字符串 输出:输出:
19、(种别码,属性值种别码,属性值)序对序对 属性值属性值token的机内表示的机内表示2022-8-6242、语法分析、语法分析 语法分析由语法分析器语法分析由语法分析器(Syntax Analyzer)完成,语完成,语法分析器又叫法分析器又叫Parser。功能:功能:Parser实现实现“组词成句组词成句”将词组成各类语法成分:表达式、因子、项,语句,子程序将词组成各类语法成分:表达式、因子、项,语句,子程序 构造分析树构造分析树 指出语法错误指出语法错误 指导翻译指导翻译 输入:输入:token序列序列 输出:语法成分输出:语法成分2022-8-6252、语法分析、语法分析sum=(10+2
20、0)*(num+square);2022-8-6263、语义分析、语义分析 语义分析语义分析(semantic analysis)一般和语法一般和语法分析同时进行,称为分析同时进行,称为语法制导翻译语法制导翻译(syntax-directed translation)功能:分析由语法分析器识别出来的语功能:分析由语法分析器识别出来的语法成分的语义法成分的语义 获取标识符的属性:类型、作用域等获取标识符的属性:类型、作用域等 语义检查:运算的合法性、取值范围等语义检查:运算的合法性、取值范围等 子程序的静态绑定:代码的相对地址子程序的静态绑定:代码的相对地址 变量的静态绑定:数据的相对地址变量的
21、静态绑定:数据的相对地址2022-8-6274、中间代码生成、中间代码生成中间代码中间代码(intermediate Code)例例:sum=(10+20)*(num+square);2022-8-628波兰表示问题波兰表示问题Lukasiewicz 1929年发明年发明 中缀表示中缀表示(Infix notation):(a+b)*(-c+d)+e/f 波兰表示波兰表示(Polish/Prefix/Parenthesis-free/Lukasiewicz notation)也就是前缀表示也就是前缀表示+*+a b+c d/ef 逆波兰表示逆波兰表示(Reverse Polish/Suffix
22、/Postfix notation)也就是后缀表示也就是后缀表示a b+c d+*ef/+运算顺序从左向右运算顺序从左向右2022-8-6294、中间代码生成、中间代码生成 中间代码的特点中间代码的特点 简单规范简单规范 与机器无关与机器无关 易于优化与转换易于优化与转换三地址码的另一种表示三地址码的另一种表示形式:形式:T1=10+20 T2=num+square T3=T1*T2 sum=T3 2022-8-630 代码优化代码优化(optimization)是指对中间代码进是指对中间代码进行优化处理,使程序运行能够尽量节省存行优化处理,使程序运行能够尽量节省存储空间,更有效地利用机器资源
23、,使得程储空间,更有效地利用机器资源,使得程序的运行速度更快,效率更高。当然这种序的运行速度更快,效率更高。当然这种优化变换必须是等价的。优化变换必须是等价的。与机器无关的优化与机器无关的优化 与机器有关的优化与机器有关的优化5、代码优化、代码优化2022-8-631与机器无关的优化与机器无关的优化 局部优化局部优化 常量合并:常数运算在编译期间完成,如常量合并:常数运算在编译期间完成,如8+9*4 公共子表达式的提取公共子表达式的提取:在基本块内进行的在基本块内进行的 循环优化循环优化 强度削减强度削减 用较快的操作代替较慢的操作用较快的操作代替较慢的操作 代码外提代码外提 将循环不变计算移
24、出循环将循环不变计算移出循环2022-8-632与机器有关的优化与机器有关的优化 寄存器的利用寄存器的利用 将常用量放入寄存器,以减少访问内存的次数将常用量放入寄存器,以减少访问内存的次数 体系结构体系结构 MIMD、SIMD、SPMD、向量机、流水机、向量机、流水机 存储策略存储策略 根据算法访存的要求安排:根据算法访存的要求安排:Cache、并行存储体、并行存储体系系减少访问冲突减少访问冲突 任务划分任务划分 按运行的算法及体系结构,划分子任务按运行的算法及体系结构,划分子任务(MPMD)2022-8-6336 6、目标代码生成、目标代码生成 将中间代码转换成目标机上的机器指令代码将中间代
25、码转换成目标机上的机器指令代码或汇编代码或汇编代码确定源语言的各种语法成分的目标代码结构确定源语言的各种语法成分的目标代码结构(机器指令组(机器指令组/汇编语句组)汇编语句组)制定从中间代码到目标代码的翻译策略或算法制定从中间代码到目标代码的翻译策略或算法 目标代码的形式目标代码的形式具有绝对地址的机器指令具有绝对地址的机器指令汇编语言形式的目标程序汇编语言形式的目标程序模块结构的机器指令(需要链接程序)模块结构的机器指令(需要链接程序)2022-8-6347、表格管理、表格管理 管理各种符号表(常数、标号、变量、过管理各种符号表(常数、标号、变量、过程、结构程、结构),查、填(登记、查找),
展开阅读全文