编译程序概论引论_第1页
编译程序概论引论_第2页
编译程序概论引论_第3页
编译程序概论引论_第4页
编译程序概论引论_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

编译程序概论引论2023/3/20第1章编译原理概论Page2第1章编译原理概论学习目标掌握:编译的各个阶段理解:编译程序的概念了解:解释器,编译程序的结构和组合2023/3/20第1章编译原理概论Page3第1章编译原理概论编译是什么?编译有什么用/为什么需要编译?编译怎么实现这个功能/作用?2023/3/20第1章编译原理概论Page4第1章编译原理概论回想使用VC6.0运行程序的过程: 编译 链接 执行检查词法是否正确检查语法是否正确将正确的高级语言生成机器能理解的目标代码机器语言汇编语言2023/3/20第1章编译原理概论Page5第1章编译原理概论1.1什么是编译程序1.2编译过程概述1.3编译程序的结构1.4编译阶段的组合1.5编译技术和软件工具2023/3/20第1章编译原理概论Page6§1.1什么是编译程序1、翻译程序:2、编译程序:3、汇编程序:高级语言程序(源程序)编译程序低级语言程序(目标程序)汇编语言程序(源程序)汇编程序机器语言程序(目标程序)一种语言程序(源程序)翻译程序另一种语言程序(目标程序)Fortran,Pascal,C…汇编语言,机器语言…2023/3/20第1章编译原理概论Page7§1.1什么是编译程序4.高级语言程序的处理过程(1)编译的方式由“编译程序”把源程序全部翻译成二进制代码,可反复执行。2023/3/20第1章编译原理概论Page8§1.1什么是编译程序4.高级语言程序的处理过程(2)解释的方式一句一句地读进高级语言源程序;边翻译边执行;翻译完成即得出执行结果;下次再执行时重新翻译。由“解释程序”对源程序逐个语句一边翻译,一边执行,执行速度慢,便于观察调试程序。2023/3/20第1章编译原理概论Page9§1.1什么是编译程序4.高级语言程序的处理过程(3)解释器(interpreter)与编译器共同点:都是语言的一个实现系统不同点:解释器是源程序的一个执行系统,工作结果得到源程序的执行结果;编译器是源程序的转换系统,工作结果得到等价于源程序的某种目标程序2023/3/20第1章编译原理概论Page10§1.1什么是编译程序5.编译程序的发展以机器语言、汇编语言为工具

以高级语言为工具编译程序自动生成工具自编译技术并行编译技术2023/3/20第1章编译原理概论Page11§1.2编译过程2023/3/20第1章编译原理概论Page12§1.2编译过程1、词法分析阶段从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(Token)。单词:语法上具有独立意义的最小单位(标识符,基本字,算符,界符等)识别规则:词法规则源程序(字符流)翻译程序单词符号串(token串)在数中出现非数字字符标识符不是以字母和下划线打头词法错误2023/3/20第1章编译原理概论Page13§1.2编译过程词法错误2023/3/20第1章编译原理概论Page14§1.2编译过程例:源程序beginvarsum,first,count:real;

sum:=first+count*10

end.r0u;;stliafe,rt:nmuus△acro△v,nigebs*1tnuoct+sirf=:m.

nde

源程序在文件中的表示空格换行字符的内部表示即ASC码单词表示成二元式(单词的种别,单词自身值)(基本字,real)(标识符,first)(冒号,:)(逗号,,)(标识符,count)(分号,;)(基本字,var)(逗号,,)(标识符,sum)(基本字,begin)(赋值号,:=)(加号,+)(标识符,first)(标识符,sum)词法分析后程序的图形表示……2023/3/20第1章编译原理概论Page15§1.2编译过程2、语法分析阶段任务:在词法分析的基础上,将单词序列分解成各类语法短语,表示成语法树。识别规则:语法规则。判断输入串是否构成一个语法上正确的程序,并生成语法树。单词符号串(token串)翻译程序语法短语else没有匹配的if表达式缺少分号结尾语法错误2023/3/20第1章编译原理概论Page16§1.2编译过程语法错误2023/3/20第1章编译原理概论Page17§1.2编译过程例:赋值语句sum:=first+count*10赋值语句规则<赋值语句>::=<标识符>“:=”<表达式><表达式>::=<表达式>“+”<表达式><表达式>::=<表达式>“*”<表达式><表达式>::=“(”<表达式>“)”<表达式>::=<标识符><表达式>::=<整数><表达式>::=<实数>赋值语句标识符:=表达式表达式+表达式标识符first表达式*表达式标识符count整数10sum2023/3/20第1章编译原理概论Page18§1.2编译过程3、语义分析阶段任务:审查源程序有无语义错误,为代码生成阶段收集类型信息。识别规则:语义规则识别结果进行类型转换或报告类型错误类型审查(静态语义):上下文相关性类型匹配类型转换数组下标越界声明和使用的函数没有定义零作除数语义错误2023/3/20第1章编译原理概论Page19§1.2编译过程语义错误2023/3/20第1章编译原理概论Page20§1.2编译过程例:源程序:sum:=first+count*10经语义分析发现整数10必须转换成实数才能与实形变量count相乘。因此在分析树上增加一语义处理结点2023/3/20第1章编译原理概论Page21§1.2编译过程4、中间代码生成

——从这里开始真正做翻译工作任务:把源程序翻译成中间代码(如四元式)四元式的形式:(运算符,运算对象1,运算对象2,结果)

例:源程序:sum:=first+count*10翻译成四元式

(1) (inttoreal10-T1) (2) (*countT1T2) (3) (+firstT2T3) (4) (:=T3-sum)2023/3/20第1章编译原理概论Page22§1.2编译过程5、代码优化任务:对中间代码进行等价变换,以便生成更高效的目标代码,即省时间和省空间。举例: (1) (inttoreal10-T1) (2) (*countT1T2) (3) (+firstT2T3) (4) (:=T3-sum)简化后: (*count10.0T1) (+firstT1sum)2023/3/20第1章编译原理概论Page23§1.2编译过程6、目标代码生成任务:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码,它的工作与硬件系统和指令含义有关.例如:(*count10.0T1)(+firstT1sum)生成汇编代码如下: MOVFcount,R2 MULF#10.0,R2 MOVFfirst,R1 ADDFR1,R2 MOVR1,sum源程序:sum:=first+count*102023/3/20第1章编译原理概论Page24§1.3编译程序的结构2023/3/20第1章编译原理概论Page25§1.3编译程序的结构表格管理和出错处理表格——保留编译过程中源程序的各种信息出错处理——处理编译过程中发现的源程序错误(词法错误、语法错误、语义错误)2023/3/20第1章编译原理概论Page26§1.4编译阶段的组合1.分析与综合分析阶段:词法分析、语法分析、语义分析只对程序进行识别和检查,未作实质翻译。综合阶段:中间代码生成、代码优化、目标代码生成对源程序进行翻译,生成目标代码。2023/3/20第1章编译原理概论Page27§1.4编译阶段的组合2.前端与后端前端:词法分析、语法分析、语义分析和中间代码的生成、中间代码优化。前端的工作只依赖于源语言,与机器无关。后端:目标代码生成。后端工作依赖于目标机,而与源语言无关(只与中间代码有关)。2023/3/20第1章编译原理概论Page28§1.4编译阶段的组合3.一遍与多遍一个编译程序可由一遍、两遍或多遍完成。“遍”是对源程序或中间语言程序从头到尾扫视并完成规定任务的过程。影响分遍的因素:源语言结构,目标机资源,开发人员编程习惯。2023/3/20第1章编译原理概论Page29§1.5编译技术和软件工具1、语言的结构化编辑器引导用户在语言的语法制导下编制程序。2、语言程序的调试工具帮助编程人员检查程序的算法和运行结果是否符合原意,与语法分析和语义处理关系密切。3、语言程序的测试工具静态分析器:检查变量的定值与引用关系。动态测试器:用测试用例记录程序运行时实际路径。2023/3/20第1章编译原理概论Page30§1.5编译技术和软件工具4.高级语言之间的转换工具把一种高级语言转换成另一种高级语言。汇编语言转换成高级语言(反编译)。5.并行编译技术并行机和多处理机的发展要求软件并行处理;运用重构技术从串行程序中分析出并行成分;用并行语言编写并行处理程序。

2023/3/20第1章编译原理概论Page31§小结内容:什么是编译程序编译的各个阶段为什么要学习编译程序重点:对编译程序的功能和结构有总体认识理解编译程序各个阶段的逻辑关系以及他们怎样作为一个整体完成编译任务2023/3/20第1章编译原理概论Page32§练习1、什么是翻译程序,编译程序,汇编程序?它们之间是什么关系?2023/3/20第1章编译原理概论Page33§练习2、填空在词法分析的基础上,将单词序列分解成各类语法短语

温馨提示

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

评论

0/150

提交评论