《编译方法》第1章概述.ppt

上传人:本田雅阁 文档编号:3475705 上传时间:2019-08-31 格式:PPT 页数:35 大小:1.17MB
返回 下载 相关 举报
《编译方法》第1章概述.ppt_第1页
第1页 / 共35页
《编译方法》第1章概述.ppt_第2页
第2页 / 共35页
《编译方法》第1章概述.ppt_第3页
第3页 / 共35页
《编译方法》第1章概述.ppt_第4页
第4页 / 共35页
《编译方法》第1章概述.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《《编译方法》第1章概述.ppt》由会员分享,可在线阅读,更多相关《《编译方法》第1章概述.ppt(35页珍藏版)》请在三一文库上搜索。

1、编译方法,1.3 编译技术的应用,1.2 编译程序,1.1 程序设计语言与程序,第1章 编译概述,1.1 程序设计语言与程序,1.1.2 程序设计语言的分类,1.1.3 程序及其结构,1.1.4 高级语言程序的处理过程,1.1.1 程序设计语言的定义,1.1 程序设计语言与程序,程序设计 语言,语义,语法,1.1.1 程序设计语言的定义,1.1 程序设计语言与程序,1.1.2 程序设计语言的分类,1.1 程序设计语言与程序,1.1.3 程序及其结构,void Q( ) Q的局部数据定义 R( ); Q( ); ,main( ) Main的局部数据定义 ,void R( ) R的局部数据定义 ,

2、1.1 程序设计语言与程序,1. C语言 一个主函数main、若干(可以为0)个子函数。,1.1.3 程序及其结构,1.1 程序设计语言与程序,2. Pascal语言,嵌套过程语言 特点: 程序的过程定义是嵌套的,内层过层由外层过程调用,内层过程 执行完毕将返回外层过程。 允许内层过程引用包围它的任一外层过程说明的变量。,1.1.3 程序及其结构,program A; A的数据说明 procedure B(参数表); B的数据说明 procedure C(参数表); C的数据说明 begin end ; begin C; end ;,procedure D; D的数据说明 begin B; e

3、nd ; begin B ; D ; end .,1.1 程序设计语言与程序,绝对机器代码程序,可再装配的机器代码程序,目标汇编程序,源程序,需预处理的源程序,1.1.4 高级语言程序的处理过程,预处理,编译,汇编,装配连接,1.1 程序设计语言与程序,1.2 编译程序,1.2.2 编译过程和编译程序的结构,1.2.3 编译程序的生成,1.2.4 编译程序与程序设计环境,1.2.1 编译与解释,1.2 编译程序,编译程序,源程序,目标程序,错误信息,高级语言程序的翻译方式: 解释、编译 编译 : 将高级语言程序翻译成另一种语言的等价程序。 源程序、目标程序和编译程序的关系:,1.2.1 编译与

4、解释,1.2 编译程序,解释:翻译一句执行一句,边翻译边执行,直到程序结束。 与编译的区别:不生成等价的目标代码程序。 优点:解释方式便于程序的调试。 (编译方式只需翻译一次,且目标程序的执行速度快),1.2.1 编译与解释,1.2 编译程序,词法分析,语义分析和中间代码生成,目标代码生成,目标程序,代码优化,语法分析,源程序,出 错 处 理,表 格 管 理,1.2.2 编译过程和编译程序的结构,1.2 编译程序,1. 编译过程,主要任务: 从左到右扫描源程序,逐一读入构成源程序的字符流,识别出 其中的一个个单词,识别出的单词称单词符号,也简称符号。 单词是高级语言程序中有实际意义的最小语法单

5、位。 单词构成规则 词法规则或构词法 (单词识别的依据) 单词内码形式 二元式 (指出了单词的类别和自身值),1.2.2 编译过程和编译程序的结构,(1)词法分析,1.2 编译程序,(1) ( 标识符, z ) (2) ( 等号, = ) (3) ( 标识符, x ) (4) ( 加号, + ) (5) ( 标识符, a ) (6) ( 取余号,%) (7) ( 整数, 3 ) (8) ( 乘号, * ) (9) ( 左括号, ( ) (10)(保留字,int ) (11)( 右括号, ) ),(12)( 左括号, ( ) (13)( 标识符, x ) (14)( 加号, + ) (15)(

6、标识符, y ) (16)( 右括号, ) ) (17)( 取余号, % ) (18)( 整数, 2 ) (19)( 除号, / ) (20)( 整数 7 ) (21)( 分号 ; ),例:z=x+a%3*(int)(x+y)%2/7;,1.2.2 编译过程和编译程序的结构,1.2 编译程序,任务 “组词成句”,根据单词分析出组成源程序的各类语法单位, 并指出其中的语法错误。 语法单位由源程序的单词构成 (如表达式、语句、乃至整个程序。) 语法单位的构成规则语法规则。 一个语言的词法规则和语法规则定义了一个程序的形式结构。 语法单位的表示语法树,(2) 语法分析,1.2.2 编译过程和编译程序

7、的结构,1.2 编译程序,例: z=x+a%3*y,1.2.2 编译过程和编译程序的结构,1.2 编译程序,任务:分析出语法单位具体的动作意义,进行初步翻译,生成与源程序 等价的中间代码程序。 语义: 定义一个程序所表示的意义,用语义规则描述。 中间代码:指令应结构简单、含义明确,易于实现源程序中间代码 目标代码三者之间的转换。 中间代码常用形式: 逆波兰式、三元式、四元式等。 四元式: (运算符,对象1,对象2,结果),例:z=x+a%3*y (1) ( % a 3 t1 ) (2) ( * t1 y t2 ) (3) ( + x t2 t3 ) (4) ( = t3 _ z ),(3)语义

8、分析和中间代码生成,1.2.2 编译过程和编译程序的结构,1.2 编译程序,任务: 对中间代码进行等价的加工变换,以便生成更有效更节省时间 和空间的目标代码。 例:z=x+a%3*y 的四元式序列: (1) ( % a 3 t1 ) (2) ( * t1 y t2 ) (3) ( + x t2 z ) 代码优化的技术: 删除公共子表达式、强度削弱、代码外提、合并已知量 注:此阶段并非编译程序所必需。,(1)( % a 3 t1 ) (2)( * t1 y t2 ) (3)( + x t2 t3 ) (4)( = t3 _ z ),(4) 代码优化,1.2.2 编译过程和编译程序的结构,1.2

9、编译程序,任务:将中间代码程序变换成目标代码程序。 目标代码: 特定机器上的绝对指令代码 可重定位的指令代码 汇编指令代码 这一阶段任务的实现与硬件系统的结构、目标指令的选择、变量 存储空间的分配、寄存器、后缓寄存器的调度等均有关系。,(5)目标代码生成,1.2.2 编译过程和编译程序的结构,1.2 编译程序,表格管理 : 为完成编译而建立并使用一些表格,以记录各种信息。 信息登录:编译的各个阶段(尤其是词法语法、语义分析阶段)。 信息使用:各阶段的分析和翻译。,出错处理 : 若编译过程中发现源程序有错误,就应进行出错处理。,(6) 表格管理和出错处理,涉及编译的每个阶段!,遍布编译的每个阶段

10、!,1.2.2 编译过程和编译程序的结构,1.2 编译程序,以上为编译过程的典型的处理模式。 并非所有的编译过程都有这些阶段。 (可以不生成中间代码、不进行代码优化) 常将编译的这五个阶段划分成两大部分: 前三个阶段 分析部分 后两个阶段 综合部分,说明:,1.2.2 编译过程和编译程序的结构,1.2 编译程序,词法分析程序,语义分析和中间代码生成程序,目标代码生成程序,目标程序,代码优化程序,语法分析程序,源程序,出 错 处 理 程 序,表 格 管 理 程 序,1.2.2 编译过程和编译程序的结构,1.2 编译程序,1. 编译程序结构,后端程序:由与源语言无关,与中间代码有关,主要依赖于目标

11、机的工 作组合而成。 (与目标机有关的代码优化、目标代码生成、相关的表格管理 和出错处理等。),前端程序:由那些主要依赖于源语言,而与目标机无关的工作组合而成。 (词法分析、语法分析、语义分析与中间代码生成、某些目标 机器无关的代码优化,以及此间的表格管理、和出错处理等。),1. “前后端” 组合方式,1.2.2 编译过程和编译程序的结构,1.2 编译程序,作用:,1.2.2 编译过程和编译程序的结构,1.2 编译程序,“遍”:对源程序或等价的中间语言程序从头到尾扫描,完成规定的 任务,并生成新的中间结果或目标程序,称一“遍”。 在一“遍”中可完成编译的一个或多个阶段的任务。 源语言的特征和机

12、器的特征决定编译程序究竟可以划分成几“遍”。,2按“遍”组合方式,1.2.2 编译过程和编译程序的结构,1.2 编译程序,第二遍,第一遍,第三遍,1.2.2 编译过程和编译程序的结构,1.2 编译程序,PDP11 C编译程序结构,编译程序的构造与三个方面有关 源语言 结构、含义和用途等。 是准确描述语言、构造编译程序的出发点。 目标语言 结构、指令系统、存储分配方式、外设管理方式、文件管理方法等。 是编译过程中应考虑的问题。 编译方法 翻译的具体方法。 由源语言特性、目标语言特性、对编译程序性能要求等决定。,1.2.3 编译程序的生成,1.2 编译程序,1用机器语言编写 复杂,不实用。 2汇编

13、语言编写 对具体的硬件环境的依赖性较高, 程序过长,也不常用。 但有些编译程序的核心部分常用汇编语言编写。 3其他高级语言编写 最方便、最常用。,1.2.3 编译程序的生成,1.2 编译程序,目标程序,CB,CA,例:某机器已有A 语言的编译程序 CA, 构造 B 语言的编译程序 CB 的过程为:,1.2.3 编译程序的生成,1.2 编译程序,L0,4采用自展技术构造 “自编译”,用被编译的语言来书写该语言自身的编译程序。,1.2.3 编译程序的生成,1.2 编译程序,5编译工具自动生成,词法分析程序的生成系统LEX 语法分析程序的生成系统YACC,1.2.3 编译程序的生成,1.2 编译程序,例:C语言的集成开发环境Visual C+,用户界面,硬件系统,操作系统,1.2.4 编译程序与程序设计环境,1.2 编译程序,1语言的结构化编辑器 2查询解释器 3硅编译器,1.3 编译技术的应用,1.3 编译技术的应用,Thank You !,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1