郑州大学编译原理第1章_第1页
郑州大学编译原理第1章_第2页
郑州大学编译原理第1章_第3页
郑州大学编译原理第1章_第4页
郑州大学编译原理第1章_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、课程目标掌握高级语言的 编译原理和方法l 什么是编译程序l 编译过程概述l 编译程序的结构l 编译程序与程序设计环境l 编译程序的生成1.1 什么叫编译程序计算机是如何实现用户的计算需求?1.1 什么叫编译程序 大多数用户是利用高级语言为工具编程来实现需求的1.1 什么叫编译程序 为什么不能执行源程序 test.c? 必须翻译成机器语言程序test.exe 1.1 什么叫编译程序 计算机如何执行高级语言程序? 实现用户的计算需求 高级语言的作用? 首先将高级语言程序翻译为机器语言程序 然后运行机器语言程序求得计算结果 翻译程序高级语言程序 低级语言程序将一种语言程序转换成逻辑上等价的另一种语言

2、程序 编译程序( c c、c+c+) ( 汇编、机器语言) 解释程序 以源程序作为输入,边解释边执行源程序本身,并不产生目标程序。 源目标 编译程序的分类 诊断编译程序 diagnostic compilerdiagnostic compiler (方便调试) 优化编译程序 optimizing compileroptimizing compiler (提高目标代码效率) 交叉编译程序 cross compilercross compiler (宿主机与目标机不同) 可变目标编译程序 retargetableretargetable compiler compiler (便于移植)编译程序的发

3、展史 compiler是随着高级语言的发展而发展的。 第一个编译程序是fortran编译程序 algol 60语言是计算机语言的研究成为一门科学的标志。 1.2 编译过程概述 编译程序的工作过程:源程序 目标程序* *.c.c * *.exe.exe编译程序turbo cturbo c例如例如his words came out in qiack succession . (1) 词法分析 识别出一个个单词,并指出单词错误。quick(2) 语法分析:各类语法范畴。 主语:his words 谓语:came out 状语:in quick succession (3) 初步翻译:他的话用快的连

4、续的方式说出来。(4) 优化: in quick succession 机关枪似的。(5) 译文:他说话像机关枪似的。1.2 编译过程概述编译程序的五个阶段:l词法分析l语法分析l语义分析与中间代码产生l优化l目标代码生成例如: for ( i=1; i=n; i+ ) 基本字 for 标识符 i n 常 数 1 界 符 ( ) ; 运算符 = = + 词法分析任务: 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词(或符号) 。 (线性分析)描述词法规则的工具正则式、 有限自动机、 正规文法 语法分析 任务: 在词法分析的基础上,根据语言的语法规则,把单词串分解成各类语法单位

5、(语法范畴)。描述语法规则的工具:例如: z = x+0.618z = x+0.618* *y ;y ; 语义分析与中间代码产生 任务: 对各类语法范畴,分析其含义,并进行初步翻译、产生中间代码。 描述语义规则的工具: 属性文法(2)中间代码的翻译 (独立于具体硬件、且含义明确的记号系统) (1)静态语义检查 (变量是否定义、类型是否正确)z := x + 0.618 z := x + 0.618 * * y y ;序号算符左操作数 右操作数结果(1)* *0.6180.618y yt1t1(2)+ +x xt1t1t2t2(3):= =t2t2z z对应的中间代码形式 (四元式): 优化 任

6、务: 对前段产生的中间代码进行加工变换,力求在最后阶段能产生出更高效的目标代码。 优化的原则: 程序的等价变换规则for (k=1; kjk k100100(9)(9)(3)* *1010k kt1t1(4)+ +a at1t1m m(5)* *1010k kt2t2(6)- -b bt2t2n n(7)+ +k k1 1k k(8)j j(2)(2)(9)中间代码:序号算符左操作数右操作数结果(1):=:=a am m(2):=:=b bn n(3):=:=1 1k k(4)jjk k100100(9)(9)(5)+ +m m1010m m(6)- -n n1010n n(7)+ +k k1

7、 1k k(8)j j(4)(4)(9)优化后的中间代码:目标代码生成任务: 把中间代码变换成依赖于特定机器上的低级语言代码。 目标代码的三种形式:(1) 绝对指令代码 (2) 汇编指令代码 (3) 可重定位的指令代码 1.3 编译过程的结构 词法分析器 语法分析器 语义分析与中间代码产生器 优化器 目标代码生成器 出 错 处 理表 格 管 理源程序源程序单词符号单词符号语法单位语法单位中间代码中间代码中间代码中间代码目标代码目标代码遍(pass) 对源程序或源程序的中间结果从头至尾扫描一次,并做有关的加工处理技术,并生成新的中间结果或目标程序。 编译前端: 与源语言有关,与目标机无关的部分。 ( 词法分析、语法分析、语义分析与 中间代码生成、优化 )编译后端: 与源语言无关,与目标机有关的部分。 (优化、目标代码生成)1.4 编译程序与程序设计环境l编辑程序(智能提示、词法查错)l编译程序l连接程序l调试工具l配置管理程序l控制流分析工具1.5 编译程序的生成l 机器/汇编语言直接编写l 在现有编译器基础上用高级语言编写l 先实现语言的内核编译,再进行自编译扩展l 先实现某语言的编译,再用该语言实现另一语言的编译,即编译编译程序l 利用编译程序产生器输入源语言和目标语言的形

温馨提示

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

评论

0/150

提交评论