ImageVerifierCode 换一换
格式:PPT , 页数:48 ,大小:323.56KB ,
资源ID:957479      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/957479.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中南大学软件学院.ppt)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中南大学软件学院.ppt

1、编译原理,中南大学软件学院陈志刚,2,2022/10/14,中南大学软件学院,编译原理课程简介,地位计算机专业的一门核心课程编译程序是计算机的重要系统软件,是高级程序设计语言的支撑基础课程主要介绍设计和构造编译程序的基本原理和方法,3,2022/10/14,中南大学软件学院,本门课程的要求,了解计算机高级语言流程序被计算机接受、扫描、词法分析、语法分析、语义解释执行的原理与过程;掌握编译的原理和基本算法、各种概念和语言描述。,4,2022/10/14,中南大学软件学院,用途与作用,这是本专业应具备的基本知识,就像其他原理一样,是基础。三大系统软件:OS、DBMS、Compiling Syste

2、m开发大型系统软件、工具软件的需要。看资料、写论文的需要,5,2022/10/14,中南大学软件学院,编译原理前导课程,前导课程及涉及内容组成原理计算机组成及结构微机原理汇编语言与机器语言离散数学推理知识及其完备性数据结构树、表等的表示与实现操作系统提供虚拟机和系统调用高级程序设计语言语言定义和编程,6,2022/10/14,中南大学软件学院,教学目的掌握编译的基本理论、常用的编译技术,了解编译过程及编译系统的构造编译程序一般由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、目标代码生成程序、代码优化程序、表格管理和出错处理程序等成分构成。通过课程的学习应掌握各个成分的功能和设计原

3、则,以及在编译阶段的逻辑关系。理解他们怎样作为一个整体完成编译任务。能运用所学技术解决实际问题,能独立编写一个小型编译系统,7,2022/10/14,中南大学软件学院,意义:学习编译程序构造原理,技术更好地理解高级语言编译的原理和方法有助于构造一些实用的工具,8,2022/10/14,中南大学软件学院,课程特点:理解性技术性 考核:作业及上机实习:30%笔试:70%,第一章 引 论,1.1 基本概念1.2 编译过程1.3 编译程序与程序设计环境1.4 高级语言程序简介,10,2022/10/14,中南大学软件学院,一、发展机器语言汇编语言高级语言工具语言第1代1GL 2GL 3GL 4GL机器

4、识别:0|1 代码相去甚远,1.1 基本概念,11,2022/10/14,中南大学软件学院,1.1 基本概念,二、翻译程序 把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的程序。如:中英互译系统、DBMS语言(DDL,DCL),12,2022/10/14,中南大学软件学院,三、编译程序(compiler)把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序。编译程序分类诊断编译程序&优化编译程序交叉编译程序&可变目标编译程序,1.1 基本概念,13,2022/10/14,中南大学软件学院,四、解释程序 把源语言写的源程序作为输入

5、,但不产生目标程序,而是边解释边执行源程序本身。,1.1 基本概念,14,2022/10/14,中南大学软件学院,编译程序 vs.解释程序,编译,解释,15,2022/10/14,中南大学软件学院,五、执行高级语言程序的步骤把高级语言程序编译成低级语言目标程序执行目标程序,1.1 基本概念,16,2022/10/14,中南大学软件学院,把英文翻译为中文 识别出句子中的一个个单词;分析句子的语法结构;根据句子的含义进行初步翻译;对译文进行修饰;写出最后的译文。,1.2 编译过程,17,2022/10/14,中南大学软件学院,一、高级语言程序的编译过程词法分析语法分析中间代码产生优化目标代码生成,

6、1.2 编译过程,作用、实现者,(并非每个编译过程均有以上全过程),18,2022/10/14,中南大学软件学院,1.词法分析,任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。依循的原则:构词规则描述工具:正规式和有限自动机FOR I:=1 TO 100 DO 保留字 标识符 等符 整常数 保留字 整常数 保留字,19,2022/10/14,中南大学软件学院,2.语法分析,任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。依循的原则:语法规则描述工具:上下文无关文法Z:=X+0.618*Y 算术表达式,赋值语句(层次结构分析),20,202

7、2/10/14,中南大学软件学院,3.中间代码产生,任务:对各类不同语法范畴按语言的语义进行初步翻译。依循的原则:语义规则中间代码:三元式,四元式,树形结构等Z:=X+0.618*Y 翻译成四元式为(1)*0.618 Y T1(2)+X T1 T2(3):=T2 _ Z,21,2022/10/14,中南大学软件学院,4.优化,任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。依循的原则:程序的等价变换规则FOR K:=1 TO 100 DO BEGIN X:=I+1;M:=I+10*K;N:=J+10*K;END,22,2022/10/14,中南大学软件学院,中间

8、代码(一),序号OPROPN1 OPN2 RESULT 注释(1):=1 K K:=1(2)j100 K(10)if(100K)goto(10)(3)+I 1 X X:=I+1(4)*10 K T1 T1:=10*K(5)+I T1 M M:=I+T1(6)*10 K T2 T2:=10*K(7)+J T2 N N:=J+T2(8)+K 1 K K:=K+1(9)j(2)goto(2)(10),23,2022/10/14,中南大学软件学院,转换后的等价代码(二),序号OPROPN1OPN2 RESULT注释(1)+I 1 X X:=I+1(2):=I M M:=I(3):=J N N:=J(4

9、):=1 K K:=1(5)j100 K(10)if(100K)goto(10)(6)+M 10 M M:=M+10(7)+N 10 N N:=N+10(8)+K 1 K K:=K+1(9)j(5)goto(5)(10),24,2022/10/14,中南大学软件学院,5.目标代码产生,任务:把中间代码变换成特定机器上的目标代码。依赖于硬件系统结构和机器指令的含义目标代码三种形式:绝对指令代码:可直接运行 可重新定位指令代码:连接装配,汇编指令代码:需要进行汇编,25,2022/10/14,中南大学软件学院,模块Aa,模块Bb,模块Cc,模块Aa,模块Bb,模块Cc,模块Aa,模块D,模块Cc,

10、26,2022/10/14,中南大学软件学院,5.目标代码产生,例:b=a+2 MOV a,R1 ADD#2,R1MOV R1,b 0001 01 00 00000000*0011 01 10 00000010 0100 01 00 00000100*L=00001111 0001 01 00 000011110011 01 10 000000100100 01 00 00010011,27,2022/10/14,中南大学软件学院,二、编译程序的逻辑结构,1.2 编译过程,28,2022/10/14,中南大学软件学院,三、表格与表格管理常见的表格:符号名表,常数表,标号表,入口名表,过程引用表

11、。格式:,名字,信息,1.2 编译过程,29,2022/10/14,中南大学软件学院,例:PASCAL程序段:,PROCEDURE INCWAP(M,N:INTEGER);LABEL START;VAR K:INTEGER;BEGINSTART:K:=M+1;M:=N+4;N:=K;END.,30,2022/10/14,中南大学软件学院,31,2022/10/14,中南大学软件学院,32,2022/10/14,中南大学软件学院,四、出错处理出错处理程序:发现源程序中的错误,把有关错误信息报告给用户语法错误语义错误,1.2 编译过程,33,2022/10/14,中南大学软件学院,五、遍(Pass

12、)所谓“遍”,对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。每遍由从外存上获得前一遍的工作结果开始,完成工作后,把结果存在外存上。每遍工作完成后所占用的存贮空间大部分被释放。例:IBM Pascal:Pass1,Pass2 Link?生成可重定位代码。所以运行时要连接成绝对指令代码。,1.2 编译过程,34,2022/10/14,中南大学软件学院,编译前端:与源语言有关,如词法分析,语法分析,语义分析与中间代码产生,与机器无关的优化编译后端:与目标机有关,与目标机有关的优化,目标代码产生,前端,后端,1.2 编译过程,六、编译前端与后端,35,20

13、22/10/14,中南大学软件学院,程序设计环境 编辑程序 编译程序连接程序 调试工具 集成化的程序设计环境,1.3 编译程序与程序设计环境,36,2022/10/14,中南大学软件学院,.NET Framework与VS.NET,37,2022/10/14,中南大学软件学院,编译程序的生成以汇编语言和机器语言为工具优点:可以针对具体的机器,充分发挥计算机的系统功能。生成的程序效率高。缺点:程序难读、难写、易出错、难维护、生产的效率低。,1.3 编译程序与程序设计环境,38,2022/10/14,中南大学软件学院,高级语言书写,优点:程序易读、易理解、容易维护、生产的效率高。缺点:难以充分发挥

14、计算机的系统功能,生成的程序效率低。,1.3 编译程序与程序设计环境,39,2022/10/14,中南大学软件学院,高级语言书写 利用已有的某种语言的编译程序实现另一语言的编译程序。,1.3 编译程序与程序设计环境,40,2022/10/14,中南大学软件学院,移植方法 把一种机器上的编译程序移植到另一种机器上。,1.3 编译程序与程序设计环境,41,2022/10/14,中南大学软件学院,L1+L2+.+Ln,L1+L2,自展技术,L1,1.3 编译程序与程序设计环境,42,2022/10/14,中南大学软件学院,编译程序自动产生编译程序-编译程序,编译程序书写系统,LEX 词法分析程序产生

15、器YACC 语法分析程序产生器,编译程序自动产生器,1.3 编译程序与程序设计环境,43,2022/10/14,中南大学软件学院,一、参数传递模块之间进行参数传递有三种形式:1、传地址(call by reference):把实在参数的地址传递给相应的形式参数2、传值(call by value):调用段把实在参数的值计算出来并放在被调用段可以拿到的地方,把值带入。3、传名(call by name):过程调用的作用相当于把被调用的过程体抄到调用出现的地方,但把其中任一出现的形式参数都替换成相应的实在参数(文字替换)。,1.4 高级语言程序简介,44,2022/10/14,中南大学软件学院,二

16、、存贮管理1、静态存贮分配 编译时就安排好目标程序运行时的全部数据空间,并能确定每个数据项目的单元地址。2、动态存贮分配 如果允许递归、可变数据结构,则必须动态分配。栈式:整个程序数据空间安排在一个栈中 堆式:允许自由地申请和退还空间,1.4 高级语言程序简介,45,2022/10/14,中南大学软件学院,例:对于下述程序,试分析用传名、传值、传地址方法传递参数时所得的打印结果。PROGRAM SS(input,output);VAR A,B:integer;PROCEDURE P(x,y,z:integer);begin y:=y+1;z:=z+x;end;BEGIN A:=2;b:=3;P(A+B,A,A);writeln(A=,A);END,1.4 高级语言程序简介,46,2022/10/14,中南大学软件学院,解:(1)传名:相当于执行 A:=2;B:=3;A:=A+1;A:=A+(A+B)writeln(A=,A);所以,结果为A=9(2)传值:把实参的值计算出来传给形参。在调用过程P时,形参x=5;y=2;z=2出过程P时,形参x=5;y=3;z=7这并不把结果回送到主程序

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1