当前位置:
文档之家› 编译原理第三版 第一章 引论PPT教学课件
编译原理第三版 第一章 引论PPT教学课件
✓ 数据库查询解释器。 数据库查询由一些谓 词组成,这些谓词由包含关系运算的布尔 表达式组成,可以被解释执行,也可以被编 译成搜索数据库的命令
2020/12/12
13
针对计算机体系结构的优化
计算机体系结构的迅速演化引起对新的编译器 技术的需要 ✓ 并行编译
编译器重新整理指令,使得指令级并行更有效。 编译器从传统的串行程序自动生成并行代码,使之
运行于多处理器上
✓ 内存分层
编译器优化历来集中在优化处理器的执行上,但是 现在更强调要使内存分层更有效
2020/12/12
14
新计算机体系结构的设计
✓ 现在计算机系统的性能不仅仅取决于它的原 始速度,还取决于编译器是否能生成充分利 用其特征的代码。
✓ 在现代计算机体系结构的研究中,在处理器 的设计阶段就开发编译器,并将编译生成的 代码在模拟器上运行,以评价拟采用体系结 构的特征。
单词类型 保留字 标识符 界符 标识符 算符(赋值) 标识符 算符(加) 整数 界符
单词值 int a ; a = a + 2 ;
2020/12/12
18
2、语法分析(Syntax analysis)
➢ 语法分析程序又称识别程序。
➢ 功能是:读入由词法分析程序识别出的 符号,根据给定语法规则,识别出各个 语法单位(如:短语、子句、语句、程 序段、程序),并生成另一种内部表示。
特点:逐条语句地分析和执行,不生成目标程 序。如:Basic,Prolog。
✓ 优点:易于查错 ✓ 不足:效率低,运行速度慢
2020/12/12
5
编译程序
编译程序是把用高级语言编写的源程序转换成 低级语言(如汇编语言或机器语言)表示的目 标程序的一种语言翻译程序。
特点:对整个程序进行分析,翻译成等价的目 标程序后执行。如:Pascal,Fortran,C
词法分析程序又称扫描程序。 是编译过程的第一个阶段,其任务是:读
源程序的字符流、识别单词(如标识符、 整数、界限符等),并转换成内部形式。 输入:源程序中的字符流 输出:等长的内部形式,即属性字。
2020/12/12
17
举例
例:一个C源程序片段:
int a; a=a+2; 词法分析后返回(如右图):
2020/12/12
11
5. 编译技术的应用
高级程序设计语言的实现。
✓ 每一轮编程语言新特征的出现都刺激编译 器优化的新研究。
✓ 有效的编译器寄存器分配技术,使C语言 的register关键字控制变得没有必要了。
2020/12/12
12
程序翻译
✓ 二进制翻译。 编译器技术可用于把一种机 器的二进制代码翻译成另一种机器的代码, 以运行原先为别的指令集编译的代码
《Compilers: Principles, Techniques, &Tools 》 Alfred V.
Aho等著 机械工业出版社。
…… 2020/12/12
2
第一章 引论
本章要点
什么叫编译程序 编译过程概述 编译程序的结构 编译程序的生成
2020/12/12
3
1.1 什么是编译程序
I:实现语言 implementation language
2020/12/12
7
Java语言处理器
Java语言处理器结合了编译和解释过程。一个 Java源程序首先被编译成一个称为字节码的中间表 示形式,然后由一个虚拟机对字节码解释执行。
源程序
翻译器
中间程序 输入虚拟机输出✓好处:一台机器上得到的字节码可以在另一台 机器上解释执行。
2020/12/12
15
提高软件开发效率的工具
源于编译器中代码优化技术的程序分析 一直在改进软件开发效率。
✓ 类型检查 类型检查是一种捕捉程序中前后不一致的 成熟而有效的技术
✓ 边界检查 数据流分析技术可用来定位缓冲区溢出
2020/12/12
16
1.2 编译过程概述
1、词法分析(Lexical analysis)
✓ 优点:只需分析和翻译一次。 ✓ 不足:在运行中发现的错误必须查找整个程序
确定。
2020/12/12
6
图示
高级语言编 写的程序 (源程序)
编译程序
低级语言程序 (目标程序)
有时用T形图来表示编译程序涉及的三个语言
SO
I
S:源语言(程序) Source language(program)
O:目标语言(程序) target/objectlanguage(program)
程序设计语言
编译原理
2020/12/12
1
课程简介
课程性质
是计算机科学与技术专业的一门重要专业课。
基本要求
透彻地理解和掌握编译程序的概念、原理、常用主要 算法和技巧。
并具有编制、调试简单编译程序的能力。 了解编译技术的最新发展和研究方向。
参考书
《编译原理》 吕映芝、张素琴,清华大学出版社。
2020/12/12
10
4.编译技术的发展
➢ 20世纪60年代起,出现自展技术(用被编译 的语言来书写该语言自身的编译程序)。
➢ 1971年,PASCAL的编译程序用自展技术生成 后,其影响越来越大。
➢ 至今已形成一套比较成熟、系统的理论与方 法及开发环境,但并行编译、嵌入式应用的 交叉编译等仍在研究和发展中。
计算机上运行的所有软件都是用某种程序设计 语言编写的。
程序设计语言编写的程序可以运行之前,首先 需要被翻译成一种能被计算机执行的形式。完 成这项翻译工作的软件系统称为语言处理程序。
常用的语言处理程序有两种:解释程序和编译 程序。
2020/12/12
4
解释程序
定义:解释程序是边解释边执行源语言程 序,不产生目标语言程序的一种语言转换 系统。
的部分就能改变目标机。
2020/12/12
9
4.编译技术的发展
➢ 第一个编译程序出现在20世纪50年代早期, 多是将算术公式翻译成机器代码。
➢ 20世纪50年代中期,出现了FORTRAN等一批 高级语言,相应的一批编译系统开发成功。
➢ 20世纪50年代末,提出并研制编译程序的编 译程序,即编译程序的自动生成工具(LEX, YACC等)。
2020/12/12
8
3.编译程序的分类
依据编译程序的不同用途和侧重可对其分 类为:
✓ 诊断型编译程序-帮助程序开发和调试。 ✓ 优化型编译程序-提高目标代码效率。 ✓ 交叉型编译程序-编译程序产生不同于宿主机的机器代
码,即A机器上运行的编译程序生成B机器的机器代码。
✓ 可变目标型编译程序-不重写编译程序中与机器无关