编译方法第1章概述

上传人:新** 文档编号:579843470 上传时间:2024-08-27 格式:PPT 页数:35 大小:1.17MB
返回 下载 相关 举报
编译方法第1章概述_第1页
第1页 / 共35页
编译方法第1章概述_第2页
第2页 / 共35页
编译方法第1章概述_第3页
第3页 / 共35页
编译方法第1章概述_第4页
第4页 / 共35页
编译方法第1章概述_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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

1、编译方法 第第第第1 1章章章章 概述概述概述概述 1.3 1.3 编译技术的应用编译技术的应用编译技术的应用编译技术的应用1.2 1.2 编译程序编译程序编译程序编译程序 1.1 1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 第第1章章 编译概述编译概述 第第第第1 1章章章章 概述概述概述概述 1.1 程序设计语言与程序程序设计语言与程序 1.1.2 1.1.2 程序设计语言的分类程序设计语言的分类程序设计语言的分类程序设计语言的分类 1.1.3 1.1.3 程序及其结构程序及其结构程序及其结构程序及其结构 1.1.4 1.1.4 高级语言程序的处理过程

2、高级语言程序的处理过程高级语言程序的处理过程高级语言程序的处理过程 1.1.1 1.1.1 程序设计语言的定义程序设计语言的定义程序设计语言的定义程序设计语言的定义 1.1 1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 第第第第1 1章章章章 概述概述概述概述 程序设计程序设计语言语言语义语义语用语用语法语法1.1.1 1.1.1 程序设计语言的定义程序设计语言的定义程序设计语言的定义程序设计语言的定义 1.1 1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 第第第第1 1章章章章 概述概述概述概述 1.1.2 1.1.2

3、程序设计语言的分类程序设计语言的分类程序设计语言的分类程序设计语言的分类 机器机器机器机器语言语言语言语言汇编汇编汇编汇编语言语言语言语言高级高级高级高级语言语言语言语言特定应特定应特定应特定应用语言用语言用语言用语言逻辑约逻辑约逻辑约逻辑约束语言束语言束语言束语言 1.1 1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 第第第第1 1章章章章 概述概述概述概述 1.1.3 1.1.3 程序及其结构程序及其结构程序及其结构程序及其结构 void Q( ) Q的局部数据定义的局部数据定义 R( ); Q( ); main( ) Main的局部数据定义的局部数据定

4、义 void R( ) R的局部数据定义的局部数据定义 1.1 1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 1. C1. C语言语言语言语言 一个主函数一个主函数main、若干(可以为、若干(可以为0)个子函数。)个子函数。 第第第第1 1章章章章 概述概述概述概述 1.1.3 1.1.3 程序及其结构程序及其结构程序及其结构程序及其结构 1.1 1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 2. Pascal2. Pascal语言语言语言语言嵌套过程语言嵌套过程语言特点:特点:特点:特点: 程序的过程定义是嵌套的,内层

5、过层由外层过程调用,程序的过程定义是嵌套的,内层过层由外层过程调用,内层过程内层过程 执行完毕将返回外层过程。执行完毕将返回外层过程。 允许内层过程引用包围它的任一外层过程说明的变量。允许内层过程引用包围它的任一外层过程说明的变量。 第第第第1 1章章章章 概述概述概述概述 1.1.3 1.1.3 程序及其结构程序及其结构程序及其结构程序及其结构 program A; A的数据说明的数据说明 procedure B(参数表参数表); B的数据说明的数据说明 procedure C(参数表参数表); C的数据说明的数据说明 begin end ; begin C; end ; procedure

6、 D; D的数据说明的数据说明 begin B; end ; begin B ; D ; end . 1.1 1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 第第第第1 1章章章章 概述概述概述概述 绝对机器代码程序绝对机器代码程序 可再装配的机器代码程序可再装配的机器代码程序 目标汇编程序目标汇编程序 源程序源程序 需预处理的源程序需预处理的源程序 1.1.4 1.1.4 高级语言程序的处理过程高级语言程序的处理过程高级语言程序的处理过程高级语言程序的处理过程 预处理预处理预处理预处理编译编译编译编译汇编汇编汇编汇编装配连接装配连接装配连接装配连接 1.1

7、1.1 程序设计语言与程序程序设计语言与程序程序设计语言与程序程序设计语言与程序 第第第第1 1章章章章 概述概述概述概述 1.2 编译程序编译程序 1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2.3 1.2.3 编译程序的生成编译程序的生成编译程序的生成编译程序的生成 1.2.4 1.2.4 编译程序与程序设计环境编译程序与程序设计环境编译程序与程序设计环境编译程序与程序设计环境 1.2.1 1.2.1 编译与解释编译与解释编译与解释编译与解释 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章

8、章章章 概述概述概述概述 编译程序编译程序编译程序编译程序 源程序源程序 目标程序目标程序 错误信息错误信息 高高级语言程序的翻言程序的翻译方式方式: : 解解释、编译编译编译 : : 将高将高级语言程序翻言程序翻译成另一种成另一种语言的等价程序。言的等价程序。 源程序、目源程序、目标程序和程序和编译程序的关系:程序的关系: 1.2.1 1.2.1 编译与解释编译与解释编译与解释编译与解释 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 解解解解释释:翻翻译一句一句执行一句,行一句,边翻翻译边执行,直到程序行,直到程序结束。束。 与与与与编译编译的区

9、的区的区的区别别:不生成等价的目不生成等价的目标代代码程序。程序。 优优点:点:点:点:解解释方式便于程序的方式便于程序的调试。 (编译方式只需翻方式只需翻译一次,且目一次,且目标程序的程序的执行速度快)行速度快) 1.2.1 1.2.1 编译与解释编译与解释编译与解释编译与解释 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 词法分析词法分析 语义分析和中间代码生成语义分析和中间代码生成 目标代码生成目标代码生成 目标程序目标程序目标程序目标程序 代码优化代码优化 语法分析语法分析 源程序源程序源程序源程序 出出错错处处理理表表格格管管理理1.2.

10、2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 1. 1. 编译过程编译过程编译过程编译过程 第第第第1 1章章章章 概述概述概述概述 主要任主要任主要任主要任务务: 从左到右从左到右扫描源程序,逐一描源程序,逐一读入构成源程序的字符流,入构成源程序的字符流,识别出出 其中的一个个其中的一个个单词,识别出的出的单词称称单词单词符号符号符号符号,也,也简称符号。称符号。单词是高是高级语言程序中有言程序中有实际意意义的最小的最小语法法单位。位。单词构成构成规则 词词法法法法规则规则或

11、构或构词法法 (单词识别的依据)的依据)单词内内码形式形式 二元式二元式二元式二元式 (指出了(指出了单词的的类别和自身和自身值)1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 (1 1)词法分析)词法分析)词法分析)词法分析 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 (1) ( 标识符,标识符, z ) (2) ( 等号,等号, = )(3) ( 标识符,标识符, x ) (4) ( 加号,加号, + )(5) ( 标识符,标识符, a ) (6) ( 取余号,取余号,

12、%)(7) ( 整数,整数, 3 ) (8) ( 乘号,乘号, * )(9) ( 左括号,左括号, ( ) (10)(保留字,)(保留字,int )(11)()( 右括号,右括号, ) )(12)()( 左括号,左括号, ( )(13)()( 标识符,标识符, x )(14)()( 加号,加号, + )(15)()( 标识符,标识符, y )(16)()( 右括号,右括号, ) )(17)()( 取余号,取余号, % )(18)()( 整数,整数, 2 )(19)()( 除号,除号, / ) (20)()( 整数整数 7 )(21)()( 分号分号 ; ) 例:例:例:例:z=x+a%3*(i

13、nt)(x+y)%2/7;1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 任任任任务务 “组词成句成句”,根据,根据单词分析出分析出组成源程序的各成源程序的各类语法法单位,位, 并指出其中的并指出其中的语法法错误。语法法单位位由源程序的由源程序的单词构成构成 (如表达式、(如表达式、语句、句、乃至整个程序。)乃至整个程序。)语法法单位的构成位的构成规则语语法法法法规则规则。 一个一个语言的言的词法法规则和和语法法规则定定义了一个程

14、序的形式了一个程序的形式结构。构。语法法单位的表示位的表示语语法法法法树树(2 2) 语法分析语法分析语法分析语法分析1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 赋值语句赋值语句 整数整数 x z 变量变量 表达式表达式 y % * + 3 a 表达式表达式 表达式表达式 表达式表达式 表达式表达式 表达式表达式 表达式表达式 变量变量 变量变量 变量变量 例例例例: z z= =x x+ +a a%3*%3*y y1.2.2

15、 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 任任任任务务:分析出分析出语法法单位具体的位具体的动作意作意义,进行初步翻行初步翻译,生成与源程序,生成与源程序 等价的中等价的中间代代码程序。程序。语义语义: : : : 定定义一个程序所表示的意一个程序所表示的意义, ,用用语义规则语义规则描述。描述。 中中中中间间代代代代码码:指令指令应结构构简单、含、含义明确,易于明确,易于实现源程序源程序中中间代代码 目目标代代码三者之三者之间的的转

16、换。中中间代代码常用形式:常用形式: 逆波逆波兰式、三元式、四元式等。式、三元式、四元式等。四元式:四元式:四元式:四元式: (运算符,(运算符,(运算符,(运算符,对对象象象象1 1 1 1,对对象象象象2 2 2 2,结结果)果)果)果)例:例:例:例:z=x+a%3*y (1) ( % a 3 t1 ) (2) ( * t1 y t2 ) (3) ( + x t2 t3 ) (4) ( = t3 _ z )(3 3)语义分析和中间代码生成)语义分析和中间代码生成)语义分析和中间代码生成)语义分析和中间代码生成1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程

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

18、强度削弱、代码外提、合并已知量. 注:注:注:注:此阶段并非编译程序所必需。此阶段并非编译程序所必需。 (1)()( % a 3 t1 ) (2)()( * t1 y t2 ) (3)()( + x t2 t3 ) (4)()( = t3 _ z ) (4 4) 代码优化代码优化代码优化代码优化 1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 任任任任务务:将中将中间代代码程序程序变换成目成目标代代码程序。程序。 目目目目标标代代

19、代代码码: 特定机器上的特定机器上的绝对指令代指令代码 可重定位的指令代可重定位的指令代码 汇编指令代指令代码这一一阶段任段任务的的实现与硬件系与硬件系统的的结构、目构、目标指令的指令的选择、变量量 存存储空空间的分配、寄存器、后的分配、寄存器、后缓寄存器的寄存器的调度等均有关系。度等均有关系。 (5 5)目标代码生成)目标代码生成)目标代码生成)目标代码生成 1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 表格管理表格管理表格管

20、理表格管理 : 为完成完成编译而建立并使用一些表格,以而建立并使用一些表格,以记录各种信息。各种信息。 信息登信息登录:编译的各个的各个阶段(尤其是段(尤其是词法法语法、法、语义分析分析阶段)。段)。 信息使用:各信息使用:各阶段的分析和翻段的分析和翻译。出错处理出错处理出错处理出错处理 : 若编译过程中发现源程序有错误,就应进行出错处理。若编译过程中发现源程序有错误,就应进行出错处理。 (6 6) 表格管理和出错处理表格管理和出错处理表格管理和出错处理表格管理和出错处理 涉及编译的每个阶段!涉及编译的每个阶段! 遍布编译的每个阶段!遍布编译的每个阶段! 1.2.2 1.2.2 编译过程和编译

21、程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 以上以上为编译过程的典型的程的典型的处理模式。理模式。并非所有的并非所有的编译过程都有程都有这些些阶段。段。 (可以不生成中(可以不生成中间代代码、不、不进行代行代码优化)化)常将常将编译的的这五个五个阶段划分成两大部分:段划分成两大部分:前三个前三个阶段段 分析部分分析部分分析部分分析部分后两个后两个阶段段 综综合部分合部分合部分合部分 说明:说明:说明:说明: 1.2.2 1.2.2 编译过程和编译程序的结构编译过程

22、和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 词法分析程序词法分析程序 语义分析和中间代码生成程序语义分析和中间代码生成程序 目标代码生成程序目标代码生成程序 目标程序目标程序目标程序目标程序 代码优化程序代码优化程序 语法分析程序语法分析程序 源程序源程序源程序源程序 出出错错处处理理程程序序表表格格管管理理程程序序1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程

23、序 1. 1. 编译程序结构编译程序结构编译程序结构编译程序结构 第第第第1 1章章章章 概述概述概述概述 后端程序后端程序后端程序后端程序:由与源语言无关,与中间代码有关,主要依赖于目标机的工:由与源语言无关,与中间代码有关,主要依赖于目标机的工 作组合而成。作组合而成。 (与目标机有关的代码优化、目标代码生成、相关的表格管理(与目标机有关的代码优化、目标代码生成、相关的表格管理 和出错处理等。)和出错处理等。) 前端程序前端程序前端程序前端程序:由那些主要依赖于源语言,而与目标机无关的工作组合而成。:由那些主要依赖于源语言,而与目标机无关的工作组合而成。 (词法分析、语法分析、语义分析与中

24、间代码生成、某些目标(词法分析、语法分析、语义分析与中间代码生成、某些目标 机器无关的代码优化,以及此间的表格管理、和出错处理等。机器无关的代码优化,以及此间的表格管理、和出错处理等。) )1. “1. “前后端前后端前后端前后端” ” 组合方式组合方式组合方式组合方式1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 作用:作用:作用:作用: 后端后端 语言语言1前端前端 语言语言2 2前端前端 语言语言n n前端前端 语言语言语言

25、语言1 1 1 1编译编译编译编译 语言语言语言语言2 2 2 2编译编译编译编译 语言语言语言语言n n n n编译编译编译编译 前端前端 机器机器2后端后端 机器机器机器机器2 2 2 2编译编译编译编译 机器机器1后端后端 机器机器机器机器1 1编译编译编译编译 机器机器n后端后端 机器机器机器机器n n n n编译编译编译编译 1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 “ “遍遍遍遍” ”:对源程序或等价的中源程序或

26、等价的中间语言程序从言程序从头到尾到尾扫描,完成描,完成规定的定的 任任务,并生成新的中,并生成新的中间结果或目果或目标程序,称一程序,称一“遍遍”。 在一在一“遍遍”中可完成中可完成编译的一个或多个的一个或多个阶段的任段的任务。 源源语言的特征和机器的特征决定言的特征和机器的特征决定编译程序究竟可以划分成几程序究竟可以划分成几“遍遍”。2 2按按按按“ “遍遍遍遍” ”组合方式组合方式组合方式组合方式1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章

27、 概述概述概述概述 第二遍第二遍第一遍第一遍第三遍第三遍1.2.2 1.2.2 编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构编译过程和编译程序的结构 1.2 1.2 编译程序编译程序编译程序编译程序 中间代码中间代码中间代码中间代码C语言源程序语言源程序目标代码(汇编)目标代码(汇编)词法分析、语法分析、词法分析、语法分析、词法分析、语法分析、词法分析、语法分析、语义处理(生成中间代码)语义处理(生成中间代码)语义处理(生成中间代码)语义处理(生成中间代码) 代码优化代码优化代码优化代码优化 目标代码生成目标代码生成目标代码生成目标代码生成 PDPPDP11 C11

28、 C编译程序结构编译程序结构编译程序结构编译程序结构 第第第第1 1章章章章 概述概述概述概述 编译程序的构造与三个方面有关程序的构造与三个方面有关 源源源源语语言言言言 结构、含构、含义和用途等。和用途等。 是准确描述是准确描述语言、构造言、构造编译程序的出程序的出发点。点。 目目目目标语标语言言言言 结构、指令系构、指令系统、存、存储分配方式、外分配方式、外设管理方式、文件管理方法等。管理方式、文件管理方法等。 是是编译过程中程中应考考虑的的问题。 编译编译方法方法方法方法 翻翻译的具体方法。的具体方法。 由源由源语言特性、目言特性、目标语言特性、言特性、对编译程序性能要求等决定。程序性能

29、要求等决定。1.2.3 1.2.3 编译程序的生成编译程序的生成编译程序的生成编译程序的生成 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 1 1用机器用机器用机器用机器语语言言言言编编写写写写 复复杂,不,不实用。用。 2 2汇编语汇编语言言言言编编写写写写 对具体的硬件具体的硬件环境的依境的依赖性性较高,高, 程序程序过长,也不常用。,也不常用。 但有些但有些编译程序的核心部分常用程序的核心部分常用汇编语言言编写。写。 3 3其他高其他高其他高其他高级语级语言言言言编编写写写写 最方便、最常用。最方便、最常用。1.2.3 1.2.3 编译程序的

30、生成编译程序的生成编译程序的生成编译程序的生成 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 目标程序目标程序 CBCAB语言源程序语言源程序CCB(A语言源程序语言源程序) 例:例:例:例:某机器已有某机器已有A 语言的编译程序语言的编译程序 CA, 构造构造 B 语言的编译程序语言的编译程序 CB 的过程为:的过程为:1.2.3 1.2.3 编译程序的生成编译程序的生成编译程序的生成编译程序的生成 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 LnL2L1L0 4 4采用自展技术构造采用自展技术构造

31、采用自展技术构造采用自展技术构造 “自编译自编译”,用被编译的语言来书写该语言自身的编译程序。,用被编译的语言来书写该语言自身的编译程序。1.2.3 1.2.3 编译程序的生成编译程序的生成编译程序的生成编译程序的生成 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 5 5编译工具自动生成编译工具自动生成编译工具自动生成编译工具自动生成词法分析程序的生成系统词法分析程序的生成系统LEX语法分析程序的生成系统语法分析程序的生成系统YACC1.2.3 1.2.3 编译程序的生成编译程序的生成编译程序的生成编译程序的生成 1.2 1.2 编译程序编译程序编

32、译程序编译程序 第第第第1 1章章章章 概述概述概述概述 例例例例:C语言的集成开发环境语言的集成开发环境Visual C+用用户界面界面 硬件系统硬件系统操作系统操作系统Visual C+集成开发环境(集成开发环境(IDE) 编译编译 程序程序 编辑编辑 程序程序 连接连接 程序程序 调试调试程序程序. . 1.2.4 1.2.4 编译程序与程序设计环境编译程序与程序设计环境编译程序与程序设计环境编译程序与程序设计环境 1.2 1.2 编译程序编译程序编译程序编译程序 第第第第1 1章章章章 概述概述概述概述 1语言的言的结构化构化编辑器器2查询解解释器器3硅硅编译器器 1.3 编译技术的应用编译技术的应用 1.3 1.3 编译技术的应用编译技术的应用编译技术的应用编译技术的应用 第第第第1 1章章章章 概述概述概述概述

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号