安徽大学编译原理课件第一章_第1页
安徽大学编译原理课件第一章_第2页
安徽大学编译原理课件第一章_第3页
安徽大学编译原理课件第一章_第4页
安徽大学编译原理课件第一章_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、1主讲:主讲:XX23456789计算机编译原理编译程计算机编译原理编译程序构造实践序构造实践张幸儿张幸儿10v 第一章第一章 引论引论v 第二章第二章 PL/OPL/O编译程序的实现编译程序的实现v 第三章第三章 文法和语言文法和语言v 第四章第四章 词法分析词法分析v 第五章第五章 自顶向下语法分析方法自顶向下语法分析方法v 第六章第六章 自底向上优先分析自底向上优先分析v 第七章第七章 LRLR分析分析11v 第八章第八章 语法制导翻译和中间代码生成语法制导翻译和中间代码生成v 第九章第九章 符号表符号表 v 第十章第十章 目标程序运行时的存储组织目标程序运行时的存储组织v 第十一章第十

2、一章 代码优化代码优化v 第十二章第十二章 代码生成代码生成v 第十三章第十三章 编译程序的构造编译程序的构造v 第十四章第十四章 面向对象语言的编译面向对象语言的编译v 第十五章第十五章 编译程序的面向对象构造编译程序的面向对象构造12131415程程序序设设计计语语言言 机器语言机器语言 机器指令(机器指令(0 0,1 1)汇编语言汇编语言机器指令(符号)机器指令(符号)可以直接执可以直接执行、依赖具行、依赖具体机器、烦体机器、烦琐容易出错琐容易出错高级语言高级语言PascalPascal、 c c 、c+c+与机器无关、与机器无关、不可直接执行不可直接执行002 0123 002 012

3、3 取出取出a a00E 1234 00E 1234 除以除以b b009 2103 009 2103 减去减去c c004 0576 004 0576 送送x xX=a/b-cX=a/b-c CLA a CLA a 取出取出a a DIV b DIV b 除以除以b b SUB c SUB c 减去减去c c STO x STO x 送送x xX=a/b-cX=a/b-cv例如,在国产例如,在国产DJSDJS2121计算机中,取、除、减、送的计算机中,取、除、减、送的指令代码分别为:指令代码分别为:002002,00E00E,009009,004004。假定假定a a、b b、c c、x x

4、四个单元的地址码分别为:四个单元的地址码分别为:01230123,12341234,21032103,05760576,那么要计算那么要计算 x x:= a / b = a / b c cv如对应于取、除、减、送采用下列符号:如对应于取、除、减、送采用下列符号:CLACLA,DIVDIV,SUBSUB,STOSTO1617源程序源程序 用汇编语言或高级语言编写的程序称为源程序目标程序目标程序 用目标语言目标语言所表示的程序 目标语言:可以是介于源语言和机器语言之间的“中间语言”,可以是某种机器的机器语言,也可以是某机器的汇编语言。翻译程序翻译程序 将源程序源程序转换为目标程序目标程序的程序称为

5、翻译程序。它是指各种语言的翻译器,包括汇编程序和编译程序,是汇编程序、编译程序以及各种变换程序的总称。18高级语高级语言程序言程序编译程序编译程序低级语低级语言程序言程序19源程序、翻译程序、目标程序源程序、翻译程序、目标程序 三者关系:三者关系:源程序源程序翻译程序翻译程序目标程序目标程序SOURCE PROGRAMTRANSLATER OBJECT PROGRAM即源程序是翻译程序的输入,目标程序是翻译程序的输出即源程序是翻译程序的输入,目标程序是翻译程序的输出20需预处理的源程序需预处理的源程序预处理程序预处理程序源程序源程序编译程序编译程序目标汇编程序目标汇编程序汇编程序汇编程序可再装

6、配的机器代码可再装配的机器代码装配装配/ /连接连接-编辑程序编辑程序绝对机器代码绝对机器代码可再装配目标文件可再装配目标文件3.3.高级语言程序的处理过程高级语言程序的处理过程2122翻译外文资料:翻译外文资料:1 1、能识别出句子中的一个个单词;、能识别出句子中的一个个单词;2 2、分析句子的语法结构;、分析句子的语法结构;3 3、根据句子的含义进行初步翻译;、根据句子的含义进行初步翻译;4 4、对译文进行修饰;、对译文进行修饰;5 5、写出最后的译文。、写出最后的译文。1.21.2编译过程和编译程序的结构编译过程和编译程序的结构1.2.1 1.2.1 编译过程概述编译过程概述1.1.编译

7、过程编译过程2.2.自然语言的翻译自然语言的翻译 23242526单词单词:高级语言中有实在意义的最小语法单位,它由字符构成。 任务:任务:输入源程序,对构成源程序的字符串进行扫描输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。和分解,识别出一个个的单词。 (1 1)词法分析)词法分析27 保留字保留字(如(如: :void,int,floatvoid,int,float) 标识符标识符(如(如: :a, b, c, d, x, y, a, b, c, d, x, y, jisuan jisuan) 常数常数 (如(如:50:50) 运算符运算符(如(如: :* *,+,=

8、 ,+,= ) 界限符界限符(如(如 ;,(;,( ) ) )28任务:任务:在词法分析的基础上,根据语言的语法规在词法分析的基础上,根据语言的语法规则,把单词符号组成各类语法单位:短语、子句、则,把单词符号组成各类语法单位:短语、子句、语句、过程、程序。语句、过程、程序。 (2 2)语法分析(编译程序的核心)语法分析(编译程序的核心)语法规则:语法规则: 语言的规则,又称为文法;规定单词如何构成语言的规则,又称为文法;规定单词如何构成短语、语句、过程和程序。短语、语句、过程和程序。 2930(3 3)语义分析及中间代码的生成)语义分析及中间代码的生成任务:任务:对语法分析识别出的各类语法范畴

9、,分析其含对语法分析识别出的各类语法范畴,分析其含义,进行初步翻译,产生介于源代码和目标代码之间义,进行初步翻译,产生介于源代码和目标代码之间的一种代码。的一种代码。 分为两阶段工作分为两阶段工作 对每种语法范畴进行静态语义检查对每种语法范畴进行静态语义检查 若语义正确,就进行中间代码的翻译若语义正确,就进行中间代码的翻译中间代码的形式:中间代码的形式: 四元式、三元式、逆波兰式四元式、三元式、逆波兰式31四元式四元式其中t1、t2、t3为编译程序引入的临时工作单元例:y = x + r * 632任务:任务:对中间代码进行加工变换加工变换,以得到高质量的目标代码(4 4)代码优化)代码优化例

10、:y = x + r * 6等价变换33(5 5)目标代码生成)目标代码生成任务:任务:把中间代码变换成特定机器上的低级语言代码低级语言代码movr, R1mul#6.0, R1movx, R2addR1, R2movR2, y34 按逻辑功能不同,可将编译过程划分为五个基本阶 段,与此相对应,我们将实现整个编译过程的编译程序划 分为五个逻辑阶段(即五个逻辑子过程)。每个阶段中都要有:符号表管理符号表管理和错误处理错误处理35诊察错误,并能报告用户错误性质和位置出错处理能力的优劣是衡量编译程序质量好坏的一个重要指标。填表填表:把源程序中的信息和编译过程中所产生的信息登记在表格中查表查表:在随后

11、的编译过程中同时又要不断地查找这些表格中的信息符号表管理符号表管理错误处理错误处理编译程序的逻辑结构编译程序的逻辑结构36典型的编译程序具有典型的编译程序具有7 7个逻辑部分个逻辑部分S.PO.P语义分析及语义分析及生成中间代码生成中间代码程序程序代码生成程序代码生成程序代码优化代码优化程序程序语法分析程序语法分析程序词法分析程序词法分析程序错错误误处处理理符符号号表表管管理理1.2.2 1.2.2 编译过程的结构编译过程的结构37根据编译程序各部分功能,将编译程序分成根据编译程序各部分功能,将编译程序分成前端前端和和后端后端 前端前端:通常将与:通常将与源程序源程序有关的编译部分称为前端。有

12、关的编译部分称为前端。 词法分析、语法分析、语义分析、中间代码生成词法分析、语法分析、语义分析、中间代码生成 -分析部分分析部分 特点:与特点:与源语言源语言有关有关 后端后端:与:与目标机目标机有关的部分称为后端。有关的部分称为后端。 代码优化、代码生成代码优化、代码生成-综合部分综合部分 特点:与特点:与目标机目标机有关有关编译程序的前端和后端编译程序的前端和后端1.2.3 1.2.3 编译阶段的组合编译阶段的组合38.java java源程序文件.class 二进制字节码文件Java虚拟机(JVM)本地计算机系统编译同一前端同一前端+ +不同后端不同后端 不同机器构成同一语言的编译程序不

13、同机器构成同一语言的编译程序例如例如JavaJava语言语言39 同一前端同一前端+ +不同后端不同后端 不同机器构成同一语言的编译程序不同机器构成同一语言的编译程序例如例如.NET.NET框架框架 40 不同前端不同前端+ +同一后端同一后端 同一机器生成几个语言的编译程序同一机器生成几个语言的编译程序例如例如GCCGCC 41 第一遍 第二遍 S.P中间形式1S.P中间形式2C2C1S.PO.P 上一遍的结果是下一遍的输入,最后一遍生成目标程序。上一遍的结果是下一遍的输入,最后一遍生成目标程序。 对源程序(包括源程序中间形式)从头到尾对源程序(包括源程序中间形式)从头到尾扫描一次,并做有关的加工处理,生成新的源程扫描一次,并做有关的加工处理,生成新的源程序中间形式或目标程序,通常称之为一序中间形式或目标程序,通常称之为一遍遍。 遍遍42一遍扫描即可完成整个编译工作的称为一遍扫描即可完成整个编译工作的称为一遍扫描编译程序一遍扫描编译程序遍的划分视具体情况而定(内存的大小、源语言的繁简、遍的划分视具体情况而定(内存的大小、源语言的繁简、目标程序质量的高低)目标程序质量的高低) 优点优点:1

温馨提示

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

评论

0/150

提交评论