第一章 编译引论.ppt
《第一章 编译引论.ppt》由会员分享,可在线阅读,更多相关《第一章 编译引论.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理及实现技术计算机科学与技术学院计算机科学与技术学院 张 红http:/Compilers Principles课课 程程 简简 介介n 课程内容课程内容1介绍编译器构造的基本原理、基本实现方介绍编译器构造的基本原理、基本实现方法和基本编译技术法和基本编译技术;1介绍形式语言和自动机理论等理论知识:介绍形式语言和自动机理论等理论知识:1强调形式化描述技术强调形式化描述技术;1强调对编译原理和技术的宏观理解。强调对编译原理和技术的宏观理解。课课 程程 简简 介介n 课程意义课程意义1理解高级语言的工作原理,编写出高效的代码,理解高级语言的工作原理,编写出高效的代码,提高软件设计技术;提高软
2、件设计技术;1 灵活设计、实现自定义语言;灵活设计、实现自定义语言;1 编译器的设计原理在计算机自身发展的过程编译器的设计原理在计算机自身发展的过程中及其应用领域中无所不在,将该原理应用于中及其应用领域中无所不在,将该原理应用于软件逆向工程、程序理解和软件安全等涉及元软件逆向工程、程序理解和软件安全等涉及元级操作的领域;级操作的领域;1前三年所学课程的一个综合理解和应用。前三年所学课程的一个综合理解和应用。参参 考考 书书 目目1.Alfred V.Aho Ravi Sethi Jeffrey D.Ullman Compilers:Principles,Techniques,and Tools
3、 人民邮电出版社。2.Kenneth C.Louden 著 冯博琴 冯岚等译 Compiler Construction Principles and Practice 机械工业出版社。3.金成植著 编译原理及实现高等教育出版社。4.吕映芝 编译原理清华大学教育出版社。1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序程序设计语言和编译程序程序设计语言和编译程序1.2 1.2 编译程序的逻辑结构编译程序的逻辑结构编译程序的逻辑结构编译程序的逻辑结构1.3 1.3 其它与编译程序相关的程序其它与编译程序相关的程序其它与编译程序相关的程序其它与编译程序相关的程序1.4 1.4 编译程序的
4、实现途径编译程序的实现途径编译程序的实现途径编译程序的实现途径第一章 编译引论主要内容:主要内容:l 几个基本概念几个基本概念:翻译程序翻译程序汇编程序汇编程序编译程序编译程序源程序源程序目标程序目标程序l编译器的工作过程及各个阶段的功能;编译器的工作过程及各个阶段的功能;l编译程序的实现途径;编译程序的实现途径;l与编译程序相关的其他程序。与编译程序相关的其他程序。编辑器编辑器预处理器预处理器连接程序连接程序装配程序装配程序调试程序调试程序一、程序设计语言一、程序设计语言(一)低级语言(面向机器的言)(一)低级语言(面向机器的言)机器语言机器语言 机器指令是机器指令是CPU能直接识别并执行的
5、指令,它能直接识别并执行的指令,它的表现形式是二进制编码。的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象、以及运算结果所存放操作数指出参与运算的对象、以及运算结果所存放的位置等。的位置等。机器指令通过线路变成电信号,让计算机执行机器指令通过线路变成电信号,让计算机执行各种不同的操作。各种不同的操作。1.1 程序设计语言和编译程序程序设计语言和编译程序 用机器语言编写出来的程序是一串二进制代码用机器语言编写出来的程序是一串二
6、进制代码序列。它是序列。它是CPU能直接识别的唯一一种语言。能直接识别的唯一一种语言。由于机器指令格式和代码所代表的含义都是硬由于机器指令格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器性规定的,故称之为面向机器的语言,也称为机器语言。语言。l用用PentiumPentium机器语言编写如下程序片段机器语言编写如下程序片段:1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 0111 1100 0000 01010010 1101 0001 0101 0000 0000 1110 1010 0000 0
7、0110000 0101 0001 0101 0000 0000 0101 0011 0001 1000 0000 0001 .0000 0000 0000 0000 0000 0000 0000 0000 Y=x+15 xy x-15 否则否则l机器语言提只供初等的运算、数据结构和控制方式:机器语言提只供初等的运算、数据结构和控制方式:机器语言只接受算术运算、按位逻辑运算和数机器语言只接受算术运算、按位逻辑运算和数的大小比较运算等。的大小比较运算等。机器语言能直接表达的数据只有最原始的位、机器语言能直接表达的数据只有最原始的位、字节、和字三种。字节、和字三种。机器语言所提供的控制转移指令也只
8、有无条件机器语言所提供的控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回转移、条件转移、进入子程序和从子程序返回等最基本的几种。等最基本的几种。l机器语言的优点:执行速度快;机器语言的优点:执行速度快;l机器语言的缺点:机器语言的缺点:难学、难记忆、难理解、出错率高、难以维难学、难记忆、难理解、出错率高、难以维护,也不能直观地反映用计算机解决问题的基本护,也不能直观地反映用计算机解决问题的基本思路。思路。机器语言程序依赖于具体的机器机器语言程序依赖于具体的机器,不具备移植不具备移植性。性。由于机器指令与由于机器指令与CPU紧密相关,所以,紧密相关,所以,不同种类的不同种类的CP
9、U所对应的机器指令也就不同,而所对应的机器指令也就不同,而且它们的且它们的指令系统指令系统往往相差很大。往往相差很大。但对同一系列的但对同一系列的CPU来说,为了满足各来说,为了满足各型号之间具有良好的兼容性,新一代型号之间具有良好的兼容性,新一代CPU的指令的指令系统必须包括先前同系列系统必须包括先前同系列CPU的指令系统。的指令系统。汇编语言汇编语言(面向机器的语言)(面向机器的语言)用助记符用助记符(Memoni)代替操作码,用地址符号代替操作码,用地址符号(Symbol)或标号或标号(Label)代替地址码,代替地址码,如如ADD表示加法操表示加法操作,作,SUB表示减法操作等等表示减
10、法操作等等。通常是为特定的计算机或。通常是为特定的计算机或系列计算机专门设计的。系列计算机专门设计的。l用用PentiumPentium汇编语言编程示例:汇编语言编程示例:1.MOV X,AX 2.CMP AX,Y3.JL S14.SUB AX,155.JMP S26.S1:ADD AX,157.S2:MOV AX,Y .XDW YDW x+15 xy Y=x-15 否则否则l汇编语言的优点:汇编语言的优点:1 1、比机器语言较易学、易记忆及易理解、比机器语言较易学、易记忆及易理解;2 2、汇编语言程序占用内存空间少,运行速度、汇编语言程序占用内存空间少,运行速度快,有着高级语言不可替代的用途
11、快,有着高级语言不可替代的用途。70%以上的系统软件是用汇编语言编写的。以上的系统软件是用汇编语言编写的。某些快速处理、位处理、访问硬件设备等高效程某些快速处理、位处理、访问硬件设备等高效程序需用汇编语言编写的。序需用汇编语言编写的。某些高级绘图程序、视频游戏程序需用汇编语言某些高级绘图程序、视频游戏程序需用汇编语言编写的。编写的。l汇编语言的缺点:汇编语言程序依赖于具体的机汇编语言的缺点:汇编语言程序依赖于具体的机器器,不具备移植性。不具备移植性。汇编语言是面向具体机型的,它离不开具体计汇编语言是面向具体机型的,它离不开具体计算机的算机的指令系统指令系统,因此,对于不同型号的计算机,因此,对
12、于不同型号的计算机,有着不同的结构的汇编语言,对于同一问题所编制有着不同的结构的汇编语言,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的汇编语言程序在不同种类的计算机间是互不相通的。的。(二)高级语言(二)高级语言l形式语言:是指按一定形式语言:是指按一定逻辑关系逻辑关系及严格规定的符号来表达及严格规定的符号来表达某种事物以及进行某种事物以及进行信息交流信息交流的一种语言的一种语言.l高级语言:模仿便于理解的自然语言和数学语言,采用一高级语言:模仿便于理解的自然语言和数学语言,采用一组形式规则来描述的人工语言。组形式规则来描述的人工语言。l高级语言编程示例:高级语言编程示例:
13、if (XY)then Y:=X+15 else Y:=X-15;l高级语言的优点:高级语言的优点:l以人为本,面向自然表达,比汇编语言更容易学,以人为本,面向自然表达,比汇编语言更容易学,易用、易理解、易修改易用、易理解、易修改;l高级语言程序不依赖于具体的机器高级语言程序不依赖于具体的机器,具备移植性。具备移植性。l高级程序设计语言分类:高级程序设计语言分类:1 1、程序设计语言按功能分类:、程序设计语言按功能分类:科学计算用语言商用语言表处理语言图形语言公式处理语言串处理语言多用途语言 2 2、按处理问题模式分类:、按处理问题模式分类:过程式语言函数式语言逻辑式语言对象式语 3 3、按执
14、行模式分类:、按执行模式分类:顺序语言并行语言二、高级语言和汇编语言的执行二、高级语言和汇编语言的执行l翻译程序(翻译程序(Translator):它把用汇编语言或:它把用汇编语言或高级语言编写的程序转换成等价的机器语言程高级语言编写的程序转换成等价的机器语言程序。序。l汇编程序汇编程序(Assembler):汇编语言的翻译程序称:汇编语言的翻译程序称为汇编程序为汇编程序(Assembler)l编译程序编译程序(Compiler):高级语言的翻译程序称:高级语言的翻译程序称为编译程序为编译程序,也称为编译器也称为编译器。l源程序(源程序(Source program):编译程序的输入):编译程
15、序的输入对象对象,它是高级语言编写的程序;它是高级语言编写的程序;l目标程序(目标程序(Object program):编译程序的输编译程序的输出对象称为目标程序。目标程序可以是机器语出对象称为目标程序。目标程序可以是机器语言程序、汇编语言程序或用户自定义某种中间言程序、汇编语言程序或用户自定义某种中间语言程序。语言程序。三、高级语言的执行方式三、高级语言的执行方式1.编译方式编译方式l编编译译阶阶段段:将将源源程程序序改改造造成成另另一一种种在在逻逻辑辑上上等等价价的的目目标标语言程序;语言程序;l运行阶段:在运行子程序的支持下执行目标程序。运行阶段:在运行子程序的支持下执行目标程序。运运行
16、行子子程程序序是是为为了了支支持持目目标标程程序序的的运运行行而而开开发发的的程程序序,如如系系统统提提供的标准库函数和目标程序所调用的其它子程序。供的标准库函数和目标程序所调用的其它子程序。目标程序目标程序程序的输入数据程序的输入数据运行结果运行结果高级语言高级语言 源程序源程序 编译程序编译程序 (器)(器)2.解释方式解释方式 接接受受某某程程序序语语言言编编写写的的源源程程序序,按按源源程程序序语语句句运运行行时时的的动动态态结结构构,直直接接逐逐句句地地分分析析、翻翻译译并并执执行行。解解释释程程序序相当于源程序的抽象执行机,是语言的实现系统。相当于源程序的抽象执行机,是语言的实现系
17、统。高级语言编程示例:高级语言编程示例:if (XY)then Y:=X+15 else Y:=X-15;运行结果运行结果 解释程序解释程序 (器)(器)程序的输入数据程序的输入数据高级语言源高级语言源程序程序解释器和编译器的比较解释器和编译器的比较解释器和编译器的比较解释器和编译器的比较l解释器是执行系统,编译器是转换系统。解释器是执行系统,编译器是转换系统。l基于解释执行的程序可以动态修改自身,基于解释执行的程序可以动态修改自身,而基于编译执行的程序而基于编译执行的程序不易胜任,不易胜任,因其需要动态编译技术,因其需要动态编译技术,难度较大。难度较大。l基于解释方式有利于人机交互。基于解释
18、方式有利于人机交互。l执行速度执行速度:解释器执行速度要慢。解释器执行速度要慢。l空间开销空间开销:解释器需要保存的信息较多,空间开销大。解释器需要保存的信息较多,空间开销大。l利用解释器可自动生成编译器。利用解释器可自动生成编译器。l二者实现技术相似。二者实现技术相似。综上,大多数的高级语言采用编译方式综上,大多数的高级语言采用编译方式。3、语言的转换执行方式语言的转换执行方式l假如要实现假如要实现L L语言,现在已有语言,现在已有L L语言的编译程序,就语言的编译程序,就可以先把用可以先把用L L语言编写的程序转换成等价的语言编写的程序转换成等价的L L语言的语言的程序,再利用程序,再利用
19、L L语言的编译程序实现语言的编译程序实现L L语言。语言。L语言编译器语言编译器 转换器转换器 L语言程序语言程序 L语言程序语言程序 目标程序目标程序 1.2 编译程序的逻辑结构编译程序的逻辑结构l编译程序的基本任务是将源语言程序翻译成等价的目编译程序的基本任务是将源语言程序翻译成等价的目标语言程序。标语言程序。1、源语言的种类成千上万,从常用的诸如源语言的种类成千上万,从常用的诸如FORTEAN,PASCAL和和C语言,到各种各样的计算机应语言,到各种各样的计算机应用领域的专用语言。用领域的专用语言。2、目标语言也是成千上万的。、目标语言也是成千上万的。3、编译程序根据它们构造的不同、所
20、执行的具体、编译程序根据它们构造的不同、所执行的具体功能的差异又分成多种类型,比如:一趟编译的、多功能的差异又分成多种类型,比如:一趟编译的、多趟编译的、具有调试和优化功能的等等。趟编译的、具有调试和优化功能的等等。尽管存在这些明显的复杂因素,任何编译程序所尽管存在这些明显的复杂因素,任何编译程序所必需执行的主要任务基本是一样的,通过理解这些任必需执行的主要任务基本是一样的,通过理解这些任务,使用同样的基本技术,我们可以为各种各样的源务,使用同样的基本技术,我们可以为各种各样的源语言和目标语言设计和构造编译程序。语言和目标语言设计和构造编译程序。1.2.11.2.1、编译器的逻辑结构编译器的逻
21、辑结构表表 处处 理理 错错 误误 处处 理理 目目标标代代码码生生成成中中间间代代码码优优化化中中间间代代码码生生成成语语义义分分析析语语法法分分析析词词法法分分析析目目标标程程序序源源程程序序词法分析的示例词法分析的示例词法分析的示例词法分析的示例u某程序片段如下:某程序片段如下:VAR sum,first,count:real;BEGIN sum:=first+count*10 END.l词法分析词法分析(Lexical Analysis)u词法分析程序扫描该程序段的字符序列,识别出下列单词序列:词法分析程序扫描该程序段的字符序列,识别出下列单词序列:1.1.关键字关键字 VAR VAR
22、 2.2.标识符标识符 sum sum 3.3.特殊符特殊符 ,4.4.标识符标识符 first first 5.5.特殊符特殊符 ,6.6.标识符标识符 count count 7.7.特殊符特殊符 :8.8.关键字关键字 real real 9.9.特殊符特殊符 ;10.10.关键字关键字 BEGIN BEGIN 11.11.标识符标识符 sum sum 12.12.特殊符特殊符 :=:=13.13.标识符标识符 first first 14.14.特殊符特殊符 +15.15.标识符标识符 count count 16.16.特殊符特殊符 *17.17.整形常数整形常数 10 10 18.
23、18.关键字关键字 END END 19.19.特殊符特殊符 .VAR sum,first,count:real;BEGINsum:=first+count*10 END.u单词种类单词种类:关键字关键字:if、then、for、while等等;标识符标识符;常数常数;运算符运算符 特殊符特殊符 分界符分界符:标点符号、左右括号等等标点符号、左右括号等等.u单词的机内表示,即单词的机内表示,即TOKEN形式,一般包形式,一般包括单词属性标识和单词内码两个部分。这种括单词属性标识和单词内码两个部分。这种形式既刻画了单词本身,又刻画了它所具有形式既刻画了单词本身,又刻画了它所具有的种类属性。的种类
24、属性。u词法分析任务:依词法分析任务:依据据语言的词法规则,扫描语言的词法规则,扫描源程序的字符序列,识别每源程序的字符序列,识别每 一个单词及其种一个单词及其种类,并将其表示成所谓的机内表示类,并将其表示成所谓的机内表示TOKEN形式。形式。u在词法分析阶段还要检查括号类配对等词法在词法分析阶段还要检查括号类配对等词法错误并去掉源程序中注释。错误并去掉源程序中注释。u词法分析阶段不依赖于语言的语法定义。词法分析阶段不依赖于语言的语法定义。u词法分析与语法分析的接口。词法分析与语法分析的接口。l语法分析语法分析(Syntax Analysis)Syntax Analysis)依据源语言的语法规
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一章 编译引论 编译 引论
限制150内