第1章-引论优秀PPT.ppt
《第1章-引论优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第1章-引论优秀PPT.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1学习任务和学习方法学习任务和学习方法学习任务学习任务驾驭编译的理论基础和形式化系统驾驭编译的理论基础和形式化系统了解编译的全部过程和具体实现方法(试验)了解编译的全部过程和具体实现方法(试验)学习方法学习方法细致听课,理解基本概念、基本原理和基本细致听课,理解基本概念、基本原理和基本算法。算法。弄懂例题,独立完成课后作业。弄懂例题,独立完成课后作业。细致总结每章的要点,在理解的基础上记忆。细致总结每章的要点,在理解的基础上记忆。理论结合实践,细致独立地完成试验。理论结合实践,细致独立地完成试验。2成果考核方法成果考核方法(1 1)平常成果)平常成果 3040%3040%课堂点名课堂点名 if
2、(if(旷课次数旷课次数/点名次数点名次数 30%)30%)取消考试资格取消考试资格 或或 交一份由辅导员交一份由辅导员+班主任两班主任两人签字的允许考试证明人签字的允许考试证明;平常作业平常作业 上机试验上机试验 (2 2)考试成果)考试成果 7060%7060%3第第1 1章章 引论引论l1.1 1.1 什么是编译程序什么是编译程序l1.2 1.2 编译过程和编译程序的结构编译过程和编译程序的结构l1.2.1 1.2.1 编译过程编译过程l1.2.2 1.2.2 编译程序结构编译程序结构l1.2.3 1.2.3 编译阶段的组合编译阶段的组合l1.3 1.3 说明程序和一些软件工具说明程序和
3、一些软件工具l1.3.1 1.3.1 说明程序说明程序l1.3.2 1.3.2 处理源程序的软件工具处理源程序的软件工具l1.4 1.4 程序设计语言范型程序设计语言范型4程序设计语言程序设计语言低级语言低级语言l特定的计算机系统所固有的语言特定的计算机系统所固有的语言l即:机器语言、汇编语言即:机器语言、汇编语言l特点:执行效率高、编制效率低特点:执行效率高、编制效率低高级语言高级语言l与自然语言比较接近的语言与自然语言比较接近的语言l如:如:l过程式语言:过程式语言:C,Pascal,Fortran,ADAC,Pascal,Fortran,ADAl对象式语言:对象式语言:Java,C+Ja
4、va,C+等等l函数式语言:函数式语言:LISPLISPl逻辑式语言:逻辑式语言:PrologPrologl特点:执行效率低、编制效率高特点:执行效率低、编制效率高51.1 1.1 什么是编译程序什么是编译程序一、编译程序(又称一、编译程序(又称“编译器编译器”)是语言的翻译器是语言的翻译器功能:高级语言的源程序功能:高级语言的源程序低级语言的目标程序低级语言的目标程序重要性:使编程者不必考虑与机器有关的细微环节重要性:使编程者不必考虑与机器有关的细微环节本课程主要探讨:依次过程式语言的编译原理和技术本课程主要探讨:依次过程式语言的编译原理和技术源程序源程序预处理程序预处理程序源程序源程序编译
5、程序编译程序汇编程序汇编程序装配装配/连接程序连接程序目标汇编程序目标汇编程序可再装配的机器代码可再装配的机器代码绝对机器代码绝对机器代码将机器代码与一些库文件连接将机器代码与一些库文件连接汇集分散的源程序、宏展开、汇集分散的源程序、宏展开、二、高级语言程序的处理过程二、高级语言程序的处理过程二、高级语言程序的处理过程二、高级语言程序的处理过程7三、编译程序的分类三、编译程序的分类l一趟编译l多趟编译l具有调试、优化功能的编译l都运用相同的基本编译技术!81、20世纪50年头早期:将计算公式翻译成机器码2、20世纪50年头中期:出现了FORTRAN等一批高级语言(也就出现了相应的编译程序)3、
6、20世纪50年头后期:出现了编译程序的编译程序(即编译程序的自动生成工具,如:LEX、YACC)4、20世纪60年头:用自展技术构造编译程序(用被编译语言书写其自身的编译程序,1971年PASCAL的成功)5、并行技术与并行语言的发展:发展方向并行语言的并行编译自动并行编译技术(将串行程序转换成并行程序)四、编译程序的历史和发展四、编译程序的历史和发展91.2编译过程和编译程序的结构编译过程和编译程序的结构一、编译过程表表 格格 管管 理理词法分析词法分析语法分析语法分析语义分析语义分析中间代码生成中间代码生成代码优化代码优化目标代码生成目标代码生成出出 错错 处处 理理源程序源程序目标程序目
7、标程序1 词法分析词法分析任务:任务:任务:任务:从左到右读入源程序的每个字符,对构成源程序的从左到右读入源程序的每个字符,对构成源程序的从左到右读入源程序的每个字符,对构成源程序的从左到右读入源程序的每个字符,对构成源程序的字符流进行扫描和分解,从而识别出一个个字符流进行扫描和分解,从而识别出一个个字符流进行扫描和分解,从而识别出一个个字符流进行扫描和分解,从而识别出一个个单词单词单词单词(也叫(也叫(也叫(也叫单词符号单词符号单词符号单词符号或或或或符号符号符号符号)。)。)。)。单词单词单词单词是具有独立意义的是具有独立意义的是具有独立意义的是具有独立意义的最小语法单位最小语法单位最小语
8、法单位最小语法单位。如:如:如:如:标识符标识符标识符标识符、保留字保留字保留字保留字(关键字或基本字)、(关键字或基本字)、(关键字或基本字)、(关键字或基本字)、算符算符算符算符、界符界符界符界符、常数常数常数常数等。等。等。等。例例例例.某源程序片断如下:某源程序片断如下:某源程序片断如下:某源程序片断如下:beginbegin var sum,first,count:real;var sum,first,count:real;sum:=first+count*10 sum:=first+count*10end.end.1.1.1.1.保留字保留字保留字保留字beginbeginbegi
9、nbegin2.2.2.2.保留字保留字保留字保留字varvarvarvar3.3.3.3.标识符标识符标识符标识符sumsumsumsum4.4.4.4.逗号逗号逗号逗号,5.5.5.5.标识符标识符标识符标识符firstfirstfirstfirst6.6.6.6.逗号逗号逗号逗号,7.7.7.7.标识符标识符标识符标识符countcountcountcount8.8.8.8.冒号冒号冒号冒号:9.9.9.9.保留字保留字保留字保留字realrealrealreal10.10.10.10.分号分号分号分号;11.11.11.11.标识符标识符标识符标识符sumsumsumsum12.12.
10、12.12.赋值号赋值号赋值号赋值号:=:=:=:=13.13.13.13.标识符标识符标识符标识符firstfirstfirstfirst14.14.14.14.加号加号加号加号+15.15.15.15.标识符标识符标识符标识符countcountcountcount16.16.16.16.乘号乘号乘号乘号*17.17.17.17.整数整数整数整数1010101018.18.18.18.保留字保留字保留字保留字endendendend19.19.19.19.界符界符界符界符.2 语法分析语法分析任务:任务:任务:任务:依据语言的依据语言的依据语言的依据语言的语法规则语法规则语法规则语法规则,
11、确定源程序的输入串是否,确定源程序的输入串是否,确定源程序的输入串是否,确定源程序的输入串是否构成一个语法上正确的程序。构成一个语法上正确的程序。构成一个语法上正确的程序。构成一个语法上正确的程序。最终将单词序列分解成各类最终将单词序列分解成各类最终将单词序列分解成各类最终将单词序列分解成各类语法短语语法短语语法短语语法短语(也叫(也叫(也叫(也叫语法语法语法语法单位单位单位单位),如),如),如),如“程序程序程序程序”、“语句语句语句语句”、“表达式表达式表达式表达式”等。等。等。等。语法语法:由程序语言基本符号组成:由程序语言基本符号组成程序中各个语法成分程序中各个语法成分的一的一组规则
12、。组规则。一般语法规则一般语法规则:由单词符号构成语法成分的规则;:由单词符号构成语法成分的规则;词法规则词法规则:由基本符号构成的符号书写规则。:由基本符号构成的符号书写规则。举例:举例:举例:举例:id1:=id2+id3*10id1:=id2+id3*10id1:=id2+id3*10id1:=id2+id3*10 的语法树的语法树的语法树的语法树赋值语句赋值语句标识符标识符表达式表达式表达式表达式+表达式表达式表达式表达式标识符标识符整数整数标识符标识符:=:=:=:=表达式表达式*id1id1id1id1sumsumsumsumid2id2id2id2firstfirstfirstf
13、irstid3id3id3id3countcountcountcount10101010id1:=id2+id3*10id1:=id2+id3*10id1:=id2+id3*10id1:=id2+id3*10 的语法树的另一种形式的语法树的另一种形式的语法树的另一种形式的语法树的另一种形式:=:=id1id1+id2id2*id3id31010程序结构的递归表示程序结构的递归表示程序结构的递归表示程序结构的递归表示 表达式的表示:表达式的表示:表达式的表示:表达式的表示:1 1 1 1)任何)任何)任何)任何标识符标识符标识符标识符是表达式。是表达式。是表达式。是表达式。2 2 2 2)任何)
14、任何)任何)任何常数常数常数常数(整常数、实常数)是表达式。(整常数、实常数)是表达式。(整常数、实常数)是表达式。(整常数、实常数)是表达式。3 3 3 3)若表达式)若表达式)若表达式)若表达式1 1 1 1和表达式和表达式和表达式和表达式2 2 2 2都是表达式,那么都是表达式,那么都是表达式,那么都是表达式,那么表达式表达式表达式表达式1+1+1+1+表达式表达式表达式表达式2 2 2 2表达式表达式表达式表达式1*1*1*1*表达式表达式表达式表达式2 2 2 2(表达式(表达式(表达式(表达式1 1 1 1)都是表达式。都是表达式。都是表达式。都是表达式。语句的表示:语句的表示:语
15、句的表示:语句的表示:1 1 1 1)标识符标识符标识符标识符:=:=:=:=表达式表达式表达式表达式 是语句是语句是语句是语句2 2 2 2)while(while(while(while(表达式表达式表达式表达式)do do do do 语句语句语句语句 是语句是语句是语句是语句3 3 3 3)if(if(if(if(表达式表达式表达式表达式)then then then then 语句语句语句语句 else else else else 语句语句语句语句 是语句是语句是语句是语句163 语义分析语义分析任务:审查源程序有无任务:审查源程序有无语义错误语义错误,为代码生成阶段,为代码生成阶
16、段收集类收集类型信息型信息。主要功能:类型检查、报语义错误、类型转换等主要功能:类型检查、报语义错误、类型转换等语义语义:是程序设计语言中按语法规则构成的各个语法成:是程序设计语言中按语法规则构成的各个语法成分的意义。分的意义。静态语义静态语义:编译时刻编译时刻即可确定的语法成分含义。即可确定的语法成分含义。动态语义动态语义:运行时刻运行时刻才能确定的语法成分含义。才能确定的语法成分含义。:=:=id1id1+id2id2*id3id31010inttorealinttorealreal first,count,sumreal first,count,sumsum:=first+count*1
17、0sum:=first+count*10举例:类型检查和转换举例:类型检查和转换4 中间代码生成中间代码生成任务:任务:任务:任务:在语法和语义分析之后,将源程序变成一种在语法和语义分析之后,将源程序变成一种在语法和语义分析之后,将源程序变成一种在语法和语义分析之后,将源程序变成一种“内部表内部表内部表内部表示形式示形式示形式示形式”。中间代码:一种结构简洁、含义明确的记号系统。中间代码:一种结构简洁、含义明确的记号系统。中间代码:一种结构简洁、含义明确的记号系统。中间代码:一种结构简洁、含义明确的记号系统。特征:特征:特征:特征:1 1 1 1)结构简洁、含义明确)结构简洁、含义明确)结构简
18、洁、含义明确)结构简洁、含义明确2 2 2 2)困难性介于源语言和机器语言之间)困难性介于源语言和机器语言之间)困难性介于源语言和机器语言之间)困难性介于源语言和机器语言之间3 3 3 3)简洁生成;)简洁生成;)简洁生成;)简洁生成;4 4 4 4)简洁将它翻译成目标代码。)简洁将它翻译成目标代码。)简洁将它翻译成目标代码。)简洁将它翻译成目标代码。四元式:四元式:四元式:四元式:(运算符,运算对象(运算符,运算对象(运算符,运算对象(运算符,运算对象1 1 1 1,运算对象,运算对象,运算对象,运算对象2 2 2 2,结果),结果),结果),结果)四元式:四元式:四元式:四元式:(运算符,
19、运算对象(运算符,运算对象(运算符,运算对象(运算符,运算对象1 1 1 1,运算对象,运算对象,运算对象,运算对象2 2 2 2,结果),结果),结果),结果)举例:源程序举例:源程序举例:源程序举例:源程序 sum:=first+count*10 sum:=first+count*10 sum:=first+count*10 sum:=first+count*10生成的四元式可以是:生成的四元式可以是:生成的四元式可以是:生成的四元式可以是:(inttoreal,(inttoreal,(inttoreal,(inttoreal,10,10,10,10,-,-,-,-,t1 )t1 )t1
20、)t1 )(*(*(*(*,id3,id3,id3,id3,t1,t1,t1,t1,t2 )t2 )t2 )t2 )(+(+(+(+,id2,id2,id2,id2,t2,t2,t2,t2,t3 )t3 )t3 )t3 )(:=(:=(:=(:=,t3,t3,t3,t3,-,-,-,-,id1)id1)id1)id1):=:=id1id1+id2id2*id3id31010inttorealinttoreal205 代码优化代码优化任务:任务:任务:任务:对中间代码进行变换或改造,使之更为对中间代码进行变换或改造,使之更为对中间代码进行变换或改造,使之更为对中间代码进行变换或改造,使之更为高效
21、(时间、空间)。高效(时间、空间)。高效(时间、空间)。高效(时间、空间)。(inttoreal,(inttoreal,10,10,-,-,t1 )t1 )(*(*,id3,id3,t1,t1,t2 )t2 )(+(+,id2,id2,t2,t2,t3 )t3 )(:=(:=,t3,t3,-,-,id1)id1)(*,(*,id3,id3,10.0,10.0,t2 )t2 )(+,(+,id2,id2,t2,t2,id1)id1)(*(*id3id310.010.0t1 )t1 )(+(+id2id2t1t1id1)id1)6 目标代码生成目标代码生成任务任务任务任务:把中间代码变换成特定机器
22、上的绝对指令代码或把中间代码变换成特定机器上的绝对指令代码或把中间代码变换成特定机器上的绝对指令代码或把中间代码变换成特定机器上的绝对指令代码或可重定位的可重定位的可重定位的可重定位的机器指令代码机器指令代码机器指令代码机器指令代码或或或或汇编指令代码汇编指令代码汇编指令代码汇编指令代码。特点特点特点特点:1 1 1 1)与硬件系统结构和指令含义有关,涉及到硬)与硬件系统结构和指令含义有关,涉及到硬)与硬件系统结构和指令含义有关,涉及到硬)与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令的选择、各种件系统功能部件的运用、机器指令的选择、各种件系统功能部件的运用、机器指令的选
23、择、各种件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后缓数据类型变量的存储空间分配以及寄存器和后缓数据类型变量的存储空间分配以及寄存器和后缓数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度等。寄存器的调度等。寄存器的调度等。寄存器的调度等。2 2 2 2)高级语言)高级语言)高级语言)高级语言低级语言转换是低级语言转换是低级语言转换是低级语言转换是基于语义基于语义基于语义基于语义的等价的等价的等价的等价变换,不是结构上的变换。变换,不是结构上的变换。变换,不是结构上的变换。变换,不是结构上的变换。(*(*id3id310.010.0t1 )t1 )(+
24、(+id2id2t1t1id1)id1)sum:=first+count*10sum:=first+count*10MOVFMOVFid3,id3,R R2 2MULFMULF#10.0,#10.0,R R2 2MOVFMOVFid2,id2,R R1 1ADDFADDFR R1 1,R R2 2MOVMOVR R1 1,id1id123表格管理表格管理任务:任务:任务:任务:用于保存源程序的各种信息。因为上述各阶用于保存源程序的各种信息。因为上述各阶用于保存源程序的各种信息。因为上述各阶用于保存源程序的各种信息。因为上述各阶段工作均需要查找、更新、构造表格。段工作均需要查找、更新、构造表格。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 引论 优秀 PPT
限制150内