张幸儿编译原理ch1.ppt_第1页
张幸儿编译原理ch1.ppt_第2页
张幸儿编译原理ch1.ppt_第3页
张幸儿编译原理ch1.ppt_第4页
张幸儿编译原理ch1.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、编译原理,主讲:马慧芳2013.9-2014.1,编译原理吕映芝清华大学出版社,编译程序设计原理杜淑敏等北京大学出版社,使用教材计算机编译原理张幸儿编著科学出版社,编译方法马良行、曹启君机械工业出版社,程序设计语言编译程序陈火旺等国防工业出版社,CompilerConstructionPrincipleandPratice编译原理及实践KennethC.Louden机械工业出版社,参考书籍参考书籍,为什么学习编译(1),编译程序构造的原理和技术一直属于计算机科学必备的专业基础知识。是计算机科学中一个非常成功的分支,也是最早获得成功的分支之一。它所建立的理论、技术和方法值得深入研究和学习。编译构

2、造正确地建立了研究的问题领域和研究方式。,为什么学习编译(2),针对编译程序构造的某些部分已经开发了标准的形式化技术,包括有限自动机理论、上下文无关文法、正规表达式、属性文法、机器代码描述、数据流分析方程式等。编译程序包含许多普遍使用的数据结构和算法,例如散列法(哈希算法)、栈机制、堆机制、垃圾收集、集合算法、表驱动算法。编译程序的许多构造技术已经得到了广泛的应用。学习编译原理和技术还有助于我们理解程序设计语言,编写优秀的软件。,本课程的目的,构造编译器基本知识编译的阶段和相关的活动相关数据结构和算法计算机科学中相关的基础理论形式语言与自动机进一步加深对软件开发的认识,说明,基于形式语言理论中

3、的有关概念来讨论编译实现问题。即编译原理=形式语言理论+编译技术本书主要内容涉及:高级程序设计语言形式语言理论的基本概念构造编译程序的基本概念、原理和技术,主要内容,总论(4h)文法与语言(6h)词法分析(12h)语法分析(18h)语义分析、中间代码生成与运行时存储分配(4h)优化和目标代码生成(2h)总结复习(2h),第1章总论,主要内容:基本概念介绍高级语言的翻译编译程序的结构编译程序的相关软件和开发工具,编译程序在计算机系统中的作用,编译系统是一种软件,一种系统软件。软件:计算机系统中的程序及其文档。系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。和具体的

4、应用领域无关,如编译系统和操作系统等。语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序,如编译系统。,裸机,操作系统,语言处理系统,应用软件层,解释程序:接受所输入的用程序语言(源语言)编写的程序(源程序),然后直接解释执行源程序。相当于源程序的抽象执行机,是语言的实现系统。高级语言源程序计算结果数据,解释程序(器),编译程序:源语言为高级语言,目标语言是低级语言(汇编或机器语言)的翻译程序。,解释程序与编译程序的特点,概念上的不同基于解释执行的程序可以动态修改自身,而基于编译执行的程序则需要动态编译技术,难度较大。基于解释方式有利于人机交互。解释执行速度要慢。编译产生的目标

5、代码所占用的空间通常要比解释方式多,解释程序和编译程序的区别,解释程序和编译程序的根本区别:是否生成目标代码,编译程序的功能和组织结构,表处理,词法分析,源程序,目标程序,错误处理,语法分析,语义分析,目标代码生成,前端,后端,中间代码优化,中间代码生成,词法分析,词法分析的工作它是编译程序的第一个阶段,主要任务是从左到右地对构成源程序的字符串进行扫描和分解,识别出一个个具有独立意义的单词什么是单词逻辑上相连的一组字符,从语法的角度来看,这些字符所具有的集体含义已不能再区分了,通常包括:保留字、标识符、界符、算符和常量等,考虑下面的一段源程序,vararea,radius:real;begin

6、read(radius);area:3.1415926*radius*radius;end.保留字:var,begin,end,read,real运算符:*,:界符:(,),;,.标识符:radius,area,语法分析,语法分析的工作语法分析是编译过程的第二阶段,其工作是在词法分析的基础上识别单词序列是否能组成其语法成分例.对赋值语句area:3.1415926*radius*radius进行语法分析,赋值语句的语法树,*,语义分析和中间代码生成,语义分析和中间代码生成的工作编译过程的第三阶段,审查源程序有无错误语义分析的任务是检查程序语义的正确性,解释程序结构的含义。检查变量是否有定义,变

7、量在使用前是否具有值,数值是否溢出等,其中的一个重要部分是进行类型的检查和转换。语义分析完成之后,编译程序通常就依据语言的语义规则、利用语法制导技术把源程序翻译成某种中间代码。,什么是中间代码是将源程序转变成的一种内部表现形式,是一种结构简单、含义明确的记号系统中间代码的两种性质容易生成这种中间代码容易将它翻译成目标代码主要形式四元式、三元式、间接三元式、逆波兰式等,代码优化,代码优化的工作是对前阶段产生的中间代码进行变换或改造,相对减少目标代码的运行时间和空间常用方法删除公共子表达式强度削弱循环不变,目标代码生成,主要工作是整个编译过程的最后一个阶段,这一阶段的工作是把中间代码变换成特定目标机器上的绝对指令代码或可重定向的指令代码或汇编指令代码编译程序的两大部分分析:揭示源程序的结构和基本数据。综合:从源程序的中间表示建立和源程序等价的目标程序。,MOV#100,R0/把常数100存入寄存器R0MOVi,R1/把变量i的值存入寄存器R1MOVsum,R2/把变量m的值存入寄存器R2Lbegin:CMPR1,R0/比较R1和R0的值,结果存入状态寄存器CTJLend/状态寄存器CT1或2,即R1R0,程序转入单元LendADDR1,R2/把寄存器R1加R2,结果送入R2INCR1/寄存器R1的值加1JLbegin/

温馨提示

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

评论

0/150

提交评论