收藏 分销(赏)

第1章编译程序概论引论.ppt

上传人:a199****6536 文档编号:10302460 上传时间:2025-05-20 格式:PPT 页数:35 大小:850.54KB
下载 相关 举报
第1章编译程序概论引论.ppt_第1页
第1页 / 共35页
第1章编译程序概论引论.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第1章 编译原理概论,Page,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第1章 编译原理概论,Page,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第1章 编译原理概论,Page,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第1章 编译原理概论,Page,*,第,1,章 编译程序概论,2025/5/20 周二,第1章 编译原理概论,Page,2,第,1,章 编译原理概论,学习目标,掌握:,编译的各个阶段,理解:,编译程序的概念,了解:,解释器,编译程序的结构和组合,2025/5/20 周二,第1章 编译原理概论,Page,3,第,1,章 编译原理概论,编译是什么?,编译有什么用,/,为什么需要编译?,编译怎么实现这个功能,/,作用?,2025/5/20 周二,第1章 编译原理概论,Page,4,第,1,章 编译原理概论,回想使用,VC 6.0,运行程序的过程:,编译,链接执行,检查词法是否正确,检查语法是否正确,将正确的高级语言生成机器能理解的目标代码,机器语言,汇编语言,2025/5/20 周二,第1章 编译原理概论,Page,5,第,1,章 编译原理概论,1.1,什么是编译程序,1.2,编译过程概述,1.3,编译程序的结构,1.4,编译阶段的组合,1.5,编译技术和软件工具,2025/5/20 周二,第1章 编译原理概论,Page,8,1.1,什么是编译程序,4,高级语言程序的处理过程,(,2,)解释的方式,一句一句地读进高级语言源程序;,边翻译边执行;,翻译完成即得出执行结果;,下次再执行时重新翻译。,由“解释程序”对源程序逐个语句一边翻译,一边执行,执行速度慢,便于观察调试程序。,2025/5/20 周二,第1章 编译原理概论,Page,9,1.1,什么是编译程序,4,高级语言程序的处理过程,(,3,)解释器,(interpreter),与编译器,共同点:都是语言的一个实现系统,不同点:,解释器是源程序的一个,执行系统,,工作结果得到源程序的执行结果;,编译器是源程序的,转换系统,,工作结果得到等价于源程序的某种目标程序,2025/5/20 周二,第1章 编译原理概论,Page,10,1.1,什么是编译程序,5,编译程序的发展,以机器语言、汇编语言为工具,以高级语言为工具,编译程序自动生成工具,自编译技术,并行编译技术,2025/5/20 周二,第1章 编译原理概论,Page,11,1.2,编译过程,2025/5/20 周二,第1章 编译原理概论,Page,12,1.2,编译过程,1,、词法分析阶段,从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个,单词,(Token),。,单词:语法上具有独立意义的最小单位(标识符,基本字,算符,界符等),识别规则:词法规则,源程序,(字符流),翻译程序,单词符号串,(,token,串),在数中出现非数字字符,标识符不是以字母和下划线打头,词法错误,1.2,编译过程,2025/5/20 周二,第1章 编译原理概论,Page,13,词法错误,2025/5/20 周二,第1章 编译原理概论,Page,14,1.2,编译过程,例,:,源程序,begin var sum,first,count:real;sum:=first+count*10 end.,r,0,u,;,;,s,t,l,i,a,f,e,r,t,:,n,m,u,u,s,a,c,r,o,v,n,i,g,e,b,s,*,1,t,n,u,o,c,t,+,s,i,r,f,=,:,m,.,n,d,e,源程序在文件中的表示,空格,换行,字符的内部表示即,ASC,码,单词表示成二元式(单词的种别,单词自身值),(,基本字,real,),(,标识符,first,),(,冒号,:,),(,逗号,),(,标识符,count),(,分号,;),(,基本字,var),(,逗号,),(,标识符,sum,),(,基本字,begin,),(,赋值号,:=),(,加号,+,),(,标识符,first,),(,标识符,sum,),词法分析后程序的图形表示,2025/5/20 周二,第1章 编译原理概论,Page,15,1.2,编译过程,2,、语法分析阶段,任务:在词法分析的基础上,将单词序列分解成各类语法短语,表示成语法树。,识别规则:语法规则。,判断,输入串是否构成一个语法上正确的程序,并生成,语法树。,单词符号串(,token,串),翻译程序,语法短语,else,没有匹配的,if,表达式缺少分号结尾,语法错误,1.2,编译过程,2025/5/20 周二,第1章 编译原理概论,Page,16,语法错误,2025/5/20 周二,第1章 编译原理概论,Page,17,1.2,编译过程,例,:,赋值语句,sum:=first+count*10,赋值语句规则,:=,“,:=,”,:=,“,+,”,:=,“,*,”,:=,“,(,”,“,),”,:=,:=,:=,赋值语句,标识符,:=,表达式,表达式,+,表达式,标识符,first,表达式,*,表达式,标识符,count,整数,10,sum,2025/5/20 周二,第1章 编译原理概论,Page,18,1.2,编译过程,3,、语义分析阶段,任务:审查源程序有无语义错误,为代码生成阶段收集类型信息。,识别规则:语义规则,识别结果进行类型转换或报告类型错误,类型审查(静态语义):,上下文相关性,类型匹配,类型转换,数组下标越界,声明和使用的函数没有定义,零作除数,语义错误,1.2,编译过程,2025/5/20 周二,第1章 编译原理概论,Page,19,语义错误,2025/5/20 周二,第1章 编译原理概论,Page,20,1.2,编译过程,例:源程序:,sum:=first+count*10,经语义分析发现整数,10,必须转换成实数才能与实形变量,count,相乘。因此在分析树上增加一语义处理结点,2025/5/20 周二,第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),2025/5/20 周二,第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),2025/5/20 周二,第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,2025/5/20 周二,第1章 编译原理概论,Page,24,1.3,编译程序的结构,2025/5/20 周二,第1章 编译原理概论,Page,25,1.3,编译程序的结构,表格管理和出错处理,表格,保留编译过程中源程序的各种信息,出错处理,处理编译过程中发现的源程序错误(词法错误、语法错误、语义错误),2025/5/20 周二,第1章 编译原理概论,Page,26,1.4,编译阶段的组合,1,分析与综合,分析阶段:,词法分析、语法分析、语义分析,只对程序进行识别和检查,,未作实质翻译,。,综合阶段:,中间代码生成、代码优化、目标代码生成,对源程序,进行翻译,,生成目标代码。,2025/5/20 周二,第1章 编译原理概论,Page,27,1.4,编译阶段的组合,2,前端与后端,前端:,词法分析、语法分析、语义分析和中间代码的生成、中间代码优化。,前端的工作只依赖于源语言,与机器无关。,后端:,目标代码生成。,后端工作依赖于目标机,而与源语言无关(只与中间代码有关)。,2025/5/20 周二,第1章 编译原理概论,Page,28,1.4,编译阶段的组合,3,一遍与多遍,一个编译程序可由一遍、两遍或多遍完成。,“,遍,”,是对源程序或中间语言程序从头到尾扫视并完成规定任务的过程。,影响分遍的因素:源语言结构,目标机资源,开发人员编程习惯。,2025/5/20 周二,第1章 编译原理概论,Page,29,1.5,编译技术和软件工具,1,、语言的结构化编辑器,引导用户在语言的语法制导下编制程序。,2,、语言程序的调试工具,帮助编程人员检查程序的算法和运行结果是否符合原意,与语法分析和语义处理关系密切。,3,、语言程序的测试工具,静态分析器:检查变量的定值与引用关系。,动态测试器:用测试用例记录程序运行时实际路径。,2025/5/20 周二,第1章 编译原理概论,Page,30,1.5,编译技术和软件工具,4,高级语言之间的转换工具,把一种高级语言转换成另一种高级语言。,汇编语言转换成高级语言(反编译)。,5,并行编译技术,并行机和多处理机的发展要求软件并行处理;,运用重构技术从串行程序中分析出并行成分;,用并行语言编写并行处理程序。,2025/5/20 周二,第1章 编译原理概论,Page,31,小结,内容:,什么是编译程序,编译的各个阶段,为什么要学习编译程序,重点:,对编译程序的功能和结构有总体认识,理解编译程序各个阶段的逻辑关系,以及他们怎样作为一个整体完成编译任务,2025/5/20 周二,第1章 编译原理概论,Page,32,练习,1,、什么是翻译程序,编译程序,汇编程序?它们之间是什么关系?,2025/5/20 周二,第1章 编译原理概论,Page,33,练习,1,、翻译程序:,2,、编译程序:,3,、汇编程序:,高级语言程序,(源程序),编译程序,低级语言程序,(目标程序),汇编语言程序,(源程序),汇编程序,机器语言程序,(目标程序),一种语言程序,(源程序),翻译程序,另一种语言程序,(目标程序),2025/5/20 周二,第1章 编译原理概论,Page,34,练习,2,、填空,在词法分析的基础上,将单词序列分解成各类语法短语。,(),把源程序翻译成中间代码。,(),从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。,(),把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。,(),对中间代码进行等价变换,以便生成更高效的目标代码。,(),审查源程序有无语义错误,为代码生成阶段收集类型信息。,(),A.,词法分析,B.,语法分析,C.,语义分析,D.,中间代码生成,E.,代码优化,F.,目标代码生成,B,A,D,C,F,E,2025/5/20 周二,第1章 编译原理概论,Page,35,下面的课程安排,第,3,章 文法和语言,为下面各个阶段做好准备,第,4,章,词法分析,第,5,章 自顶向下语法分析方法,第,6,章 自底向上优先分析,第,7,章,LR,分析,第,8,章 语法制导翻译和,中间代码生成,第,11,章,代码优化,第,12,章,代码生成,语法分析,语义分析,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服