编译程序构造原理和实现.ppt

上传人:ga****84 文档编号:492177 上传时间:2018-10-14 格式:PPT 页数:21 大小:929KB
下载 相关 举报
编译程序构造原理和实现.ppt_第1页
第1页 / 共21页
编译程序构造原理和实现.ppt_第2页
第2页 / 共21页
编译程序构造原理和实现.ppt_第3页
第3页 / 共21页
编译程序构造原理和实现.ppt_第4页
第4页 / 共21页
编译程序构造原理和实现.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、编译原理及实现技术,计算机科学与技术学院申春课件网址:-课程资源-课程总览-计算机科学与技术学院-编译原理与实现,2,编译程序及功能 编译程序的逻辑结构 编译程序的实现途径 课程学习的意义和学习方法,第一章 编译引论,3,1.1 编译程序及功能,编译程序:(Compiler,compiling program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。,4,高级语言程序的处理过程,源程序文件(.c),预处理器,标准源程序文件(.i),编译程序,目标汇编代码(.asm,.s),汇编程序,可重定位的目标机器代码(.obj,.o),连接/装配程序

2、,绝对机器代码(.exe, .out),编辑器,5,1.2 程序设计语言的发展,机器语言:能够被计算机的硬件系统直接执行的机器指令序列,如“1011011000000000”。汇编语言:将硬件指令用一些助记符表示,即符号化的机器语言,如“ADD AX ,15”。高级语言:模仿便于理解的自然语言和数学语言,采用一组形式规则来描述的人工语言。,6,1.3 高级语言的几种执行方式,1.编译方式:源语言为高级语言,目标语言是低级语言(汇编或机器语言)的翻译程序。,7,1.3 高级语言的几种执行方式,2.解释方式:对源程序直接逐句地分析执行。解释器相当于源程序的抽象执行机,是语言的实现系统。,8,3.语

3、言的转换执行方式:将A语言程序转换为B语言程序,用B语言已有的编译器去编译执行。(同级程序设计语言),1.3 高级语言的几种执行方式,编译、解释,A语言程序,转换程序,B语言程序,运行结果,9,1.4 编译程序的逻辑结构,10,依据语言的词法规则,扫描源程序的字符序列,识别每 一个单词及其种类,并将其表示成所谓的机内表示TOKEN记号形式。,词法分析(Lexical Analysis),for(i=1;i30;i+),单词种类: 关键字: if、then、for、while等; 标识符; 常量; 运算符 特殊符 分界符: 标点符号、 左右括号等等., ,11,语法分析(Syntax Analy

4、sis) 依据语言的语法规则,将单词分解成各类语法短语(可表示为语法树),确定整个输入串是否构成一个语法上正确的程序。,+,:=,*,赋值语句,表达式,表达式,标识符,表达式,标识符,first,表达式,标识符,count,常数,10,表达式,sum:= first + count * 10,1. := 标识符:=2. := +3. := *4. := ()5. := 标识符6. := 常数,sum,12,语义分析(Semantic Analysis) 检查源程序有无语义错误,为代码生成阶段收集信息。(标识符是否声明、类型检查、强制类型转换、下标越界检查等),int i, a20=0;for(

5、i=1; i30; i+) a10=a10+i;,13,生成如下四元式形式的中间代码序列:1、(int-to-real, 10 , - ,t1 )2、(*, count , t1 ,t2 )3、(+, first , t2 ,t3 )4、(:=, t3 ,- , sum ),例: sum:=first + count * 10,中间代码生成(Intermediate Code Generation) 为便于对程序的优化、移植和修改,将源程序转换成一种称为中间代码的内部表示形式。中间代码是一种简单的、含义明确的记号系统,例如四元式(运算符,对象1,对象2,结果)。,14,中间代码优化( Inte

6、rmediate Code Optimization) 在不改变源程序语义的前提下变换或改造中间代码,使生成的目标代码更为高效,即缩短运行时间或节省存储空间。,1、(int-to-real, 10 , - ,t1 )2、(*, count , t1 ,t2 ),(*, count , 10.0 ,t2 ),15,目标代码生成(Code Generation) 中间代码变换为特定机器上的机器指令代码(绝对指令代码或可重定位的指令代码)或汇编指令代码。例:sum:=first + count * 10 生成如下汇编代码: 1. MOV count , R1 2. MULT R1 , #10.0 3

7、. MOV first , R2 4. ADD R1, R2 5. MOV R1, sum,四元式中间代码序列:1、(*, count , 10.0 ,t2 )2、(+, first , t2 ,t3 )3、(:=, t3 ,- , sum ),表格管理(Symbol-Table Management) 较大的编译程序用到很多表格,为了合理地管理表格(构造、查找、更新),很多编译程序设立一些专门子程序(称为表格管理程序)负责管理表格。 错误处理(Error Detection and Reporting) 编译程序各个阶段还存在着错误处理模块,当有错误出现时,由相应的错误处理模块给出解决方案,

8、使得编译器能够继续进行下去。词法和语法错误检查集中一次完成,而语义错误检查要分散在语法分析以后的各个阶段。,17,遍 (Pass)所谓“遍”就是对源程序或源程序的中间表示形式从头到尾扫描一次,并作加工处理,生成新的中间结果或目标程序。,18,1.5 编译程序实现方法,转换法:将A语言程序转换成B语言的程序,再利用B语言的编译器实现A语言。自展法:实际上就是用低级语言先实现一个简单的编译器,然后用这个编译器的语言再去编写一个更高级的编译器,这个新编译器是旧编译器的扩展的过程。 移植法:修改目标代码或者修改编译程序的后端。 工具法:Lex、Yacc等工具生成语法分析程序。(软件自动化研究成果),19,加深对高级语言的工作原理的理解; 提高设计大型软件的能力; 提高形式化、抽象化的理解和运用能力; 编译技术的应用。可以将该原理应用于软件逆向工程、程序分析/验证、模型转换及和软件安全等涉及元级操作的领域;受资源限制的嵌入式系统;可以灵活设计、实现自定义语言;,1.5 课程的意义,20,学习编译原理的方法,理论教学 64 学时实践教学 16 学时(第9周-12周),21,自定义SNL语言(Small Nested Language),实现该语言的编译程序,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。