《第1章 编译程序概论精选PPT.ppt》由会员分享,可在线阅读,更多相关《第1章 编译程序概论精选PPT.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1章章 编译程序概论编译程序概论第1页,此课件共27页哦本课程的地位本课程的地位n n计算机科学与技术最重要的专业课之一,掌握编译计算机科学与技术最重要的专业课之一,掌握编译计算机科学与技术最重要的专业课之一,掌握编译计算机科学与技术最重要的专业课之一,掌握编译方法和技术是每一个优秀计算机软件专业人员的必方法和技术是每一个优秀计算机软件专业人员的必方法和技术是每一个优秀计算机软件专业人员的必方法和技术是每一个优秀计算机软件专业人员的必备素质。备素质。备素质。备素质。n n很很很很多多多多被被被被称称称称为为为为程程程程序序序序设设设设计计计计大大大大师师师师的的的的人人人人都都都都是是是是
2、编编编编译译译译领领领领域域域域的的的的高高高高手手手手.写写写写出出出出第第第第一一一一个个个个微微微微型型型型机机机机上上上上运运运运行行行行的的的的BasicBasicBasicBasic语语语语言言言言的的的的比比比比尔尔尔尔盖盖盖盖茨茨茨茨,设设设设计计计计出出出出DelphiDelphiDelphiDelphi的的的的BorlandBorlandBorlandBorland的的的的“世世世世界界界界上上上上最最最最厉厉厉厉害害害害的的的的程程程程序序序序员员员员”,SunSunSunSun的的的的JAVAJAVAJAVAJAVA之之之之父父父父,贝贝贝贝尔尔尔尔实实实实验验验验室室
3、室室的的的的C+C+C+C+之之之之父父父父等等。等等。等等。等等。n n学习编译程序的构造原理和实现技术,不仅可以掌握编译程学习编译程序的构造原理和实现技术,不仅可以掌握编译程学习编译程序的构造原理和实现技术,不仅可以掌握编译程学习编译程序的构造原理和实现技术,不仅可以掌握编译程序本身的实现技术,同时也能够提高对程序设计语言的理解,序本身的实现技术,同时也能够提高对程序设计语言的理解,序本身的实现技术,同时也能够提高对程序设计语言的理解,序本身的实现技术,同时也能够提高对程序设计语言的理解,提高语言的设计能力,提高开发大型软件的能力。提高语言的设计能力,提高开发大型软件的能力。提高语言的设计
4、能力,提高开发大型软件的能力。提高语言的设计能力,提高开发大型软件的能力。第2页,此课件共27页哦学习任务学习任务n n掌握程序设计语言编译程序构造的一般原理、基本设掌握程序设计语言编译程序构造的一般原理、基本设掌握程序设计语言编译程序构造的一般原理、基本设掌握程序设计语言编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。了解将计方法、主要实现技术和一些自动构造工具。了解将计方法、主要实现技术和一些自动构造工具。了解将计方法、主要实现技术和一些自动构造工具。了解将高级程序设计语言源程序翻译成计算机能处理的目标高级程序设计语言源程序翻译成计算机能处理的目标高级程序设计语言源程
5、序翻译成计算机能处理的目标高级程序设计语言源程序翻译成计算机能处理的目标代码的整个过程代码的整个过程代码的整个过程代码的整个过程。n n相关知识:程序设计语言、计算机体系组成原理、相关知识:程序设计语言、计算机体系组成原理、相关知识:程序设计语言、计算机体系组成原理、相关知识:程序设计语言、计算机体系组成原理、数据结构、操作系统等。数据结构、操作系统等。数据结构、操作系统等。数据结构、操作系统等。第3页,此课件共27页哦教材教材n n教材:教材:教材:教材:编译原理编译原理编译原理编译原理,张素琴,张素琴,张素琴,张素琴 等编著,清华大学出版社等编著,清华大学出版社等编著,清华大学出版社等编著
6、,清华大学出版社n n参考书目:参考书目:参考书目:参考书目:编编编编译译译译程程程程序序序序设设设设计计计计原原原原理理理理,杜杜杜杜淑淑淑淑敏敏敏敏 等等等等编编编编著著著著,北北北北京京京京大大大大学学学学出出出出版社版社版社版社编译原理教程编译原理教程编译原理教程编译原理教程,胡元义,胡元义,胡元义,胡元义 等编著,西安电子科技大等编著,西安电子科技大等编著,西安电子科技大等编著,西安电子科技大学出版社学出版社学出版社学出版社第4页,此课件共27页哦成绩考核方法成绩考核方法 平时成绩占平时成绩占平时成绩占平时成绩占50%50%50%50%期末考试成绩占期末考试成绩占期末考试成绩占期末考
7、试成绩占50%50%50%50%。平时成绩为:平时成绩为:平时成绩为:平时成绩为:课堂考勤课堂考勤课堂考勤课堂考勤5%5%5%5%平时作业平时作业平时作业平时作业15%15%15%15%期中考试期中考试期中考试期中考试30%30%30%30%第5页,此课件共27页哦第1章 编译程序概论n n教学要求:教学要求:教学要求:教学要求:本章讲解编译程序、本章讲解编译程序、本章讲解编译程序、本章讲解编译程序、解释程序的基本概念,解释程序的基本概念,解释程序的基本概念,解释程序的基本概念,概述编译过程,介绍编译程序的逻辑结构和编译程序概述编译过程,介绍编译程序的逻辑结构和编译程序概述编译过程,介绍编译程
8、序的逻辑结构和编译程序概述编译过程,介绍编译程序的逻辑结构和编译程序的组织形式。要求理解编译程序、解释程序和遍的基的组织形式。要求理解编译程序、解释程序和遍的基的组织形式。要求理解编译程序、解释程序和遍的基的组织形式。要求理解编译程序、解释程序和遍的基本概念;掌握编译过程各阶段的任务和编译程序逻辑本概念;掌握编译过程各阶段的任务和编译程序逻辑本概念;掌握编译过程各阶段的任务和编译程序逻辑本概念;掌握编译过程各阶段的任务和编译程序逻辑结构及其各部分的基本功能。结构及其各部分的基本功能。结构及其各部分的基本功能。结构及其各部分的基本功能。n n教学重点:教学重点:教学重点:教学重点:编译程序工作的
9、基本过程及其各阶段的编译程序工作的基本过程及其各阶段的编译程序工作的基本过程及其各阶段的编译程序工作的基本过程及其各阶段的基本任务,编译程序总体框架。基本任务,编译程序总体框架。基本任务,编译程序总体框架。基本任务,编译程序总体框架。第6页,此课件共27页哦n n基本概念基本概念基本概念基本概念机器语言:能够被计算机的硬件系统直接执行机器语言:能够被计算机的硬件系统直接执行机器语言:能够被计算机的硬件系统直接执行机器语言:能够被计算机的硬件系统直接执行的指令程序。的指令程序。的指令程序。的指令程序。汇编语言:将硬件指令用一些助记符表示。如汇编语言:将硬件指令用一些助记符表示。如汇编语言:将硬件
10、指令用一些助记符表示。如汇编语言:将硬件指令用一些助记符表示。如ADDADDADDADD表表表表示加法操作,示加法操作,示加法操作,示加法操作,SUBSUBSUBSUB表示减法操作等等表示减法操作等等表示减法操作等等表示减法操作等等 高级语言:使用便于理解的自然语言。高级语言:使用便于理解的自然语言。高级语言:使用便于理解的自然语言。高级语言:使用便于理解的自然语言。第7页,此课件共27页哦n n编译程序(器):接受某种语言的源语言程序后,编译程序(器):接受某种语言的源语言程序后,编译程序(器):接受某种语言的源语言程序后,编译程序(器):接受某种语言的源语言程序后,将它改造成另一种逻辑上等
11、价的目标语言程序。将它改造成另一种逻辑上等价的目标语言程序。将它改造成另一种逻辑上等价的目标语言程序。将它改造成另一种逻辑上等价的目标语言程序。源语言:像Pascal 或c那样的高级语言目标语言:像汇编语言 或机器语言那样的低级语言第8页,此课件共27页哦需预处理的源程序需预处理的源程序预处理程序预处理程序源程序源程序编译程序编译程序汇编程序汇编程序装配装配/连接编辑程序连接编辑程序目标汇编程序目标汇编程序可再装配的机器代码可再装配的机器代码绝对机器代码绝对机器代码可再装配目标文件可再装配目标文件高级语言程序的处高级语言程序的处高级语言程序的处高级语言程序的处理过程理过程理过程理过程第9页,此
12、课件共27页哦表表 格格 管管 理理词法分析词法分析语法分析语法分析语义分析语义分析中间代码生成中间代码生成代码优化代码优化目标代码生成目标代码生成出出 错错 处处 理理源程序源程序目标程序目标程序编译的各个阶段编译的各个阶段编译的各个阶段编译的各个阶段第10页,此课件共27页哦词法分析词法分析词法分析的功能是从左到右读入源程序的每个字符,词法分析的功能是从左到右读入源程序的每个字符,词法分析的功能是从左到右读入源程序的每个字符,词法分析的功能是从左到右读入源程序的每个字符,对构成源程序的字符流进行扫描和分解,从而识别出对构成源程序的字符流进行扫描和分解,从而识别出对构成源程序的字符流进行扫描
13、和分解,从而识别出对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也叫单词符号或符号)。一个个单词(也叫单词符号或符号)。一个个单词(也叫单词符号或符号)。一个个单词(也叫单词符号或符号)。依据:语言的构词规则。依据:语言的构词规则。依据:语言的构词规则。依据:语言的构词规则。单词:逻辑上紧密相连的一组字符,这些字符具有集单词:逻辑上紧密相连的一组字符,这些字符具有集单词:逻辑上紧密相连的一组字符,这些字符具有集单词:逻辑上紧密相连的一组字符,这些字符具有集体含义。体含义。体含义。体含义。如:标识符、保留字(关键字或基本字)、算符、界如:标识符、保留字(关键字或基本字)、算符、界如:
14、标识符、保留字(关键字或基本字)、算符、界如:标识符、保留字(关键字或基本字)、算符、界符等。符等。符等。符等。(第四章)第11页,此课件共27页哦例例例例.某源程序片断如下:某源程序片断如下:某源程序片断如下:某源程序片断如下:beginbegin var sum,first,count:real;var sum,first,count:real;sum:=first+count*10 sum:=first+count*10end.end.1.1.保留字保留字保留字保留字beginbegin2.2.保留字保留字保留字保留字varvar3.3.标识符标识符标识符标识符sumsum4.4.逗号逗
15、号逗号逗号,5.5.标识符标识符标识符标识符firstfirst6.6.逗号逗号逗号逗号,7.7.标识符标识符标识符标识符countcount8.8.冒号冒号冒号冒号:9.9.保留字保留字保留字保留字realreal10.10.10.10.分号分号分号分号;11.11.标识符标识符标识符标识符sumsum12.12.赋值号赋值号赋值号赋值号:=:=13.13.标识符标识符标识符标识符firstfirst14.14.加号加号加号加号+15.15.标识符标识符标识符标识符countcount16.16.乘号乘号乘号乘号*17.17.整数整数整数整数101018.18.保留字保留字保留字保留字end
16、end19.19.界符界符界符界符.第12页,此课件共27页哦语法分析语法分析 语法分析的功能是将单词序列分解成各类语法短语语法分析的功能是将单词序列分解成各类语法短语语法分析的功能是将单词序列分解成各类语法短语语法分析的功能是将单词序列分解成各类语法短语(也叫语法单位,句子),确定整个输入串是否构成一(也叫语法单位,句子),确定整个输入串是否构成一(也叫语法单位,句子),确定整个输入串是否构成一(也叫语法单位,句子),确定整个输入串是否构成一个语法上正确的程序。个语法上正确的程序。个语法上正确的程序。个语法上正确的程序。依据:语言的语法规则依据:语言的语法规则依据:语言的语法规则依据:语言的
17、语法规则,即描述程序结构的规则。即描述程序结构的规则。即描述程序结构的规则。即描述程序结构的规则。通过语法分析确定整个输入串是否构成一个语法上通过语法分析确定整个输入串是否构成一个语法上通过语法分析确定整个输入串是否构成一个语法上通过语法分析确定整个输入串是否构成一个语法上正确的程序。正确的程序。正确的程序。正确的程序。(第5,6,7章)第13页,此课件共27页哦语句的语句的语句的语句的递归定义递归定义递归定义递归定义:1.1.1.1.标识符标识符标识符标识符:=:=:=:=表达式表达式表达式表达式 是语句。是语句。是语句。是语句。2.2.2.2.while(while(while(while
18、(表达式表达式表达式表达式)do do do do 语句语句语句语句 if(if(if(if(表达式表达式表达式表达式)then then then then 语句语句语句语句 else else else else 语句语句语句语句都是语句。都是语句。都是语句。都是语句。表达式的递归定义:表达式的递归定义:表达式的递归定义:表达式的递归定义:1.1.1.1.任何标识符是表达式。任何标识符是表达式。任何标识符是表达式。任何标识符是表达式。2.2.2.2.任何常数是表达式任何常数是表达式任何常数是表达式任何常数是表达式.3.3.3.3.若表达式若表达式若表达式若表达式1 1 1 1和表达式和表达
19、式和表达式和表达式2 2 2 2是表达式是表达式是表达式是表达式,那么表达式那么表达式那么表达式那么表达式1+1+1+1+表达式表达式表达式表达式2,2,2,2,表达表达表达表达式式式式1 1 1 1*表达式表达式表达式表达式2,(2,(2,(2,(表达式表达式表达式表达式)都是表达式都是表达式都是表达式都是表达式.第14页,此课件共27页哦赋值语句赋值语句标识符标识符标识符标识符整数整数标识符标识符表达式表达式:=:=表达式表达式+表达式表达式表达式表达式表达式表达式*id1:=id2+id3*10 id1:=id2+id3*10 的语法树的语法树的语法树的语法树id1id1sumsumid
20、2id2firstfirstid3id3countcount1010第15页,此课件共27页哦n n语义分析的功能是审查源程序有无语义错误,为语义分析的功能是审查源程序有无语义错误,为语义分析的功能是审查源程序有无语义错误,为语义分析的功能是审查源程序有无语义错误,为代码生成阶段收集类型信息。代码生成阶段收集类型信息。代码生成阶段收集类型信息。代码生成阶段收集类型信息。n n语义分析主要能识别的语义错误有变量没有声明语义分析主要能识别的语义错误有变量没有声明语义分析主要能识别的语义错误有变量没有声明语义分析主要能识别的语义错误有变量没有声明就使用,变量重复声明,运算对象类型是否匹配就使用,变量
21、重复声明,运算对象类型是否匹配就使用,变量重复声明,运算对象类型是否匹配就使用,变量重复声明,运算对象类型是否匹配等等。等等。等等。等等。语义分析语义分析(第8章)第16页,此课件共27页哦如:类型检查。如:类型检查。:=:=id1id1+id2id2*id3id31010inttorealinttorealsum:=first+count*10sum:=first+count*10id1id1id2id2id3id3第17页,此课件共27页哦中间代码生成中间代码生成中间代码:一种结构简单、含义明确的记号系统。中间代码:一种结构简单、含义明确的记号系统。中间代码:一种结构简单、含义明确的记号系
22、统。中间代码:一种结构简单、含义明确的记号系统。原则:原则:原则:原则:容易生成;容易生成;容易生成;容易生成;容易将它翻译成目标代码。容易将它翻译成目标代码。容易将它翻译成目标代码。容易将它翻译成目标代码。如四元式如四元式如四元式如四元式:(运算符,运算对象(运算符,运算对象(运算符,运算对象(运算符,运算对象1 1 1 1,运算对象,运算对象,运算对象,运算对象2 2 2 2,结果),结果),结果),结果)将源程序生成一种内部表示形式,这种内部表示形将源程序生成一种内部表示形式,这种内部表示形将源程序生成一种内部表示形式,这种内部表示形将源程序生成一种内部表示形式,这种内部表示形式叫中间代
23、码。式叫中间代码。式叫中间代码。式叫中间代码。(第8章)第18页,此课件共27页哦如:源程序如:源程序如:源程序如:源程序 sum:=first+count*10sum:=first+count*10生成的四元式可以是:生成的四元式可以是:生成的四元式可以是:生成的四元式可以是:(inttorealinttoreal,1010,-,t1 )t1 )(*(*,id3id3,t1t1,t2 )t2 )(+(+,id2id2,t2t2,t3 )t3 )(:=(:=,t3t3,-,id1)id1)id1id1id2id2id3id3第19页,此课件共27页哦代码优化代码优化(inttorealintt
24、oreal,1010,-,t1 )t1 )(*(*,id3id3,t1t1,t2 )t2 )(+(+,id2id2,t2t2,t3 )t3 )(:=(:=,t3t3,-,id1)id1)(*(*,id3id3,10.010.0,t2 )t2 )(+(+,id2id2,t2t2,id1)id1)(*(*,id3id3,10.010.0,t1 )t1 )(+(+,id2id2,t1t1,id1)id1)目的目的:使目标代码运行时间较短,占用空间较小。使目标代码运行时间较短,占用空间较小。(第8章)第20页,此课件共27页哦目标代码生成目标代码生成任务任务任务任务:把中间代码变换成特定机器上的绝对:
25、把中间代码变换成特定机器上的绝对:把中间代码变换成特定机器上的绝对:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令指令代码或可重定位的指令代码或汇编指令指令代码或可重定位的指令代码或汇编指令指令代码或可重定位的指令代码或汇编指令代码。代码。代码。代码。特点特点特点特点:与硬件系统结构和指令含义有关,涉:与硬件系统结构和指令含义有关,涉:与硬件系统结构和指令含义有关,涉:与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令的及到硬件系统功能部件的运用、机器指令的及到硬件系统功能部件的运用、机器指令的及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变
26、量的存储空间分配以选择、各种数据类型变量的存储空间分配以选择、各种数据类型变量的存储空间分配以选择、各种数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度等。及寄存器和后缓寄存器的调度等。及寄存器和后缓寄存器的调度等。及寄存器和后缓寄存器的调度等。(第12章)第21页,此课件共27页哦n n符号表用来记录源程序中出现的标识符,并收集每个标符号表用来记录源程序中出现的标识符,并收集每个标符号表用来记录源程序中出现的标识符,并收集每个标符号表用来记录源程序中出现的标识符,并收集每个标识符的各种属性信息。识符的各种属性信息。识符的各种属性信息。识符的各种属性信息。n n符号表是由若干记录组成的数
27、据结构,每个标识符在表中符号表是由若干记录组成的数据结构,每个标识符在表中符号表是由若干记录组成的数据结构,每个标识符在表中符号表是由若干记录组成的数据结构,每个标识符在表中有一条记录,每条记录有多个域,每个域记载标识符的一有一条记录,每条记录有多个域,每个域记载标识符的一有一条记录,每条记录有多个域,每个域记载标识符的一有一条记录,每条记录有多个域,每个域记载标识符的一个属性。个属性。个属性。个属性。符号表管理(第9章)第22页,此课件共27页哦表表 格格 管管 理理 程程 序序词法分析程序词法分析程序语法分析程序语法分析程序语义分析程序语义分析程序中间代码生成程序中间代码生成程序代码优化程
28、序代码优化程序目标代码生成程序目标代码生成程序出出 错错 处处 理理 程程 序序源程序源程序目标程序目标程序编译程序的结构编译程序的结构编译程序的结构编译程序的结构第23页,此课件共27页哦有关名词:有关名词:有关名词:有关名词:前端(前端(前端(前端(front endfront endfront endfront end):主要依赖于源语言而与目标机):主要依赖于源语言而与目标机):主要依赖于源语言而与目标机):主要依赖于源语言而与目标机器无关的编译阶段。如:词法分析、语法分析、语器无关的编译阶段。如:词法分析、语法分析、语器无关的编译阶段。如:词法分析、语法分析、语器无关的编译阶段。如:
29、词法分析、语法分析、语义分析、中间代码生成、部分优化工作、与前端有义分析、中间代码生成、部分优化工作、与前端有义分析、中间代码生成、部分优化工作、与前端有义分析、中间代码生成、部分优化工作、与前端有关的出错处理工作和符号表管理工作。关的出错处理工作和符号表管理工作。关的出错处理工作和符号表管理工作。关的出错处理工作和符号表管理工作。后端(后端(后端(后端(back endback endback endback end):依赖于目标机而一般不依赖于源语):依赖于目标机而一般不依赖于源语):依赖于目标机而一般不依赖于源语):依赖于目标机而一般不依赖于源语言,只与中间代码有关的编译阶段。如:目标代
30、码生成,言,只与中间代码有关的编译阶段。如:目标代码生成,言,只与中间代码有关的编译阶段。如:目标代码生成,言,只与中间代码有关的编译阶段。如:目标代码生成,以及相关出错处理和符号表操作。以及相关出错处理和符号表操作。以及相关出错处理和符号表操作。以及相关出错处理和符号表操作。遍(趟):对源程序或其等价的中间语言程序从头遍(趟):对源程序或其等价的中间语言程序从头遍(趟):对源程序或其等价的中间语言程序从头遍(趟):对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。每一遍扫视可完到尾扫视并完成规定任务的过程。每一遍扫视可完到尾扫视并完成规定任务的过程。每一遍扫视可完到尾扫视并完成
31、规定任务的过程。每一遍扫视可完成上述一个阶段或多个阶段的工作。成上述一个阶段或多个阶段的工作。成上述一个阶段或多个阶段的工作。成上述一个阶段或多个阶段的工作。第24页,此课件共27页哦编译的几个阶段如何组合,编译程序分成几遍主要影响因素:(1)源语言和机器的特征.(2)机器的情况.多遍比一遍少占内存,逻辑结构清晰一些,但消耗时间较多.第25页,此课件共27页哦语言处理程序n n解解解解释释释释程程程程序序序序(器器器器):接接接接受受受受某某某某种种种种语语语语言言言言源源源源程程程程序序序序,然然然然后后后后直直直直接接接接解解解解释执行源程序。释执行源程序。释执行源程序。释执行源程序。n
32、n编编编编译译译译程程程程序序序序(器器器器):接接接接受受受受某某某某种种种种语语语语言言言言的的的的源源源源语语语语 言言言言程程程程序序序序后后后后,将将将将它它它它改改改改造造造造成成成成另另另另一一一一种种种种逻逻逻逻辑辑辑辑上上上上等等等等价价价价的的的的目目目目标标标标语语语语言言言言程程程程序。序。序。序。n n两种方法数据处理时间不同?两种方法数据处理时间不同?两种方法数据处理时间不同?两种方法数据处理时间不同?第26页,此课件共27页哦n n区别区别:是否生成目标代码是否生成目标代码.存储组织不同存储组织不同 解释程序比较慢解释程序比较慢,空间开销比较大空间开销比较大第27页,此课件共27页哦