编译第07章.ppt_第1页
编译第07章.ppt_第2页
编译第07章.ppt_第3页
编译第07章.ppt_第4页
编译第07章.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章编译概述,7.1不同语言程序之间的翻译翻译将一种语言编写的程序转换成等效(等价)的另一种语言编写的程序称为翻译等价的程序变换。,2.编译,将高级语言程序翻译为低级语言的程序称为编译。,3翻译程序与编译程序,翻译是由一个程序来实现的,该程序称为翻译程序(翻译器)。,翻译程序,源程序,目标程序,(目标语言),(源语言),翻译程序对应的语言称为宿主语言(HostLanguage)运行翻译程序的机器称为宿主机(HostMachine),实现编译的翻译程序称为编译程序(编译器)。,编译程序,源程序,目标程序,(低级语言),(高级语言),宿主语言,4与“编译”相关的语言、程序源语言、宿主语言、目标语

2、言源程序、编译程序、目标程序其中,源语言是高级语言;目标语言是低级语言;,宿主语言可以是任意语言:一般为C语言或汇编语言,如果编译程序生成宿主机执行的机器代码,则称该编译程序为自驻留的如果编译程序是用源语言编写的,则称该编译程序为自编译的。如果一个编译程序生成的是别的机器的机器代码,则称为交叉编译,7.2编译的步骤,(逻辑上)将编译过程分成两部分即源程序的分析和目标程序的合成具体可分为5个步骤:,5个逻辑步骤,词法分析语法分析语义分析与中间代码生成中间代码优化目标代码生成,1)词法分析,分析输入字符串根据词法规则识别出单词符号。,词法分析,编译器将源程序当作一个字符串,首先对它进行从左到右的扫

3、描,并进行分析,识别出符合词法规则的单词符号如基本字、标识符、字面常量、运算符和界符等。,2)语法分析,根据语法规则,将单词符号构成各类语法单位,进行语法检查,生成语法树。,语法分析,对词法分析识别出来的符号流,按语法规则进行分析,识别出各类语法单位:表达式、语句、程序单元和程序等,以便后续步骤进行分析与合成。,语法分析,语法分析通常是一种结构分析,分析的结果形成一棵语法树。,3)语义分析与中间代码生成,根据语义规则,对语法正确的语法单位进行初步翻译生成中间代码。,语义分析,经过词法、语法分析后的程序,如果没有错误,就可对其进行语义分析并可按语义要求对各种语法单位进行实质性翻译。,这时可以直接

4、产生目标程序但这样直接产生的目标程序的执行效率低。,语义分析,大多数编译器采用中间代码来描述源程序的语义。这种中间语言对应某种抽象机结构简单,语义明确,易于翻译成目标代码,同时也便于优化和移植。,对中间代码进行等价变换,提高代码的时空效率。语义分析产生的中间代码不依赖于实际机器,易于实现一些等价变换,使生成的目标程序占用空间更少,执行更快。,4)优化,5)目标代码生成,根据优化后的中间代码及有关信息,可生成较为有效的目标代码,即目标机的机器语言程序或汇编语言程序。若生成的是汇编语言程序,还需由将其汇编成机器语言程序。,编译的每个步骤都需要进行符号表管理和出错处理,注意,符号表管理,程序员在编写

5、程序时,对各种数据对象和实体进行说明。编译程序根据这些说明,为各种实体建立描述符,并搜集这些实体的属性信息,以供编译各阶段使用。,符号表管理,描述符是存放实体属性的表格,根据实体的不同,表格的形式也不同,其中用得最多的是符号表。编译程序应当有一组表格管理程序,负责对这些表格的建立和维护(包括引用、查找和更新等)。,符号表,符号表除了记录名字本身而外,还记录了与名字关联的各种属性信息。,符号表的一般形式每个名字对应一个表项一个表项包括名字域和信息域。,名字,信息,信息域通常设若干子域及标志位,其内容可以是和名字有关的任何信息类型,种属,长度,相对地址形参标志,说明标志,赋值标志等。,名字的长度、

6、信息域的组成及长度可能是各不相同的采用间接表技术。,二.常用的符号表结构1.线性表:用N个数组A1,A2,AN来存放符号表的N个子域2.HASH表,出错处理,编译程序各个阶段都可能发现源程序中的错误特别是在语法分析阶段,可能发现大量的语法错误。,发现错误后,编译程序就要进行错误处理,包括报告错误的性质,发生错误的位置等同时要将错误的影响限制在尽可能小的范围,以便对源程序的剩余部分继续编译下去,查出剩余的错误。,编译器的结构,词法分析,语法分析,单词符号串,语法树,语义分析和中间代码生成,中间代码,优化,经优化的中间代码,代码生成,源程序,目标程序,源程序的分析,目标程序的合成,符号表管理,出错

7、处理,从分析源程序到建立一个可执行的目标程序,处理过程还需要其它工具程序的配合。预处理器、汇编器连接器、装入器,7.3完整的程序处理过程,(可执行),(多个源程序文件),完整的程序处理过程,预处理器,编译器,源程序,汇编语言程序,汇编器,目标程序,(可重定位),连接器、装入器,目标程序,源程序,库程序,7.4编译前端与后端,在现代编译器中,通常将编译过程划分为前端和后端两大部分,分别加以实现。前端和后端通过中间代码连接,可极大的提高编译器设计与实现的效率。,前端,主要是与源语言相关的部分词法、语法分析、语义分析和中间代码生成等。,后端,主要是与目标语言相关的部分包括优化、目标代码生成等。,自从FORTRAN编译程序出现以来,计算机科学家对编译理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论