- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
01 编译器原理与技术---引论
展开查看详情
1 .第 1 章 引论 编译原理与技术
2 .介绍编译器构造的一般原理和基本实现方法 包括 的理论知识:形式语言和自动机理论、语法制导的定义和属性文法、类型论与类型系统、程序分析原理等 强调 形式描述技术和自动生成技术 强调 对编译原理和技术的宏观理解,不把注意力分散到枝节算法,不偏向于任何源语言或目标 机器 课程简介 课程内容
3 .提高编程水平:对编程语言的设计和实现有深刻的理解,对和编程语言有关的理论有所了解,对宏观上把握编程语言来说,起一个奠基的作用 高级语言 汇编语言 提升 对计算机系统的理解,提升软件分析能力 了解软件 安全相关问题: 漏洞、恶意代码 高 可信 软件 如何安全地编程 课程简介 学习意义
4 .教材: 陈意云 、张昱, 编译原理(第 3 版) ,高等教育出版社 参考书: 张昱 、陈意云, 编译原理实验教程 ,高等教育出版社 陈意云、张昱, 编译原理习题精选与解析 ,高等教育出版社 课程简介 教材和参考书 龙书 虎书 鲸书
5 .课程 难度: 质量 上接近本校 计算机 专业 前 难后易,前少后多 每次课程内容务必在下次课前理解,不要积压 课件无需打印,例题应做笔记 到课率: 不点名,不计入成绩,但作为调整分数的依据 除非你有很好的编程基础,否则不建议自学 作业 : 作业务必自己做,要思考 不计入总分,但作为调整分数的依据 课程实验: 自己动手,大有收获 独立完成,按时 提交 课程简介 课程要求
6 .闭卷考试 理解概念 掌握方法 学期 总评 考试卷面成绩 占 80 % 实验 20% 警告:本课挂科 率可能会 比较高 课程简介 考试情况
7 .名词解释 翻译器 (translator ) :一种语言到另一种语言 编译器 (compiler ) :高级语言到低级语言 解释器 (interpreter ) :边解释边执行 编译器 从逻辑上可以分成若干个 阶段 每个阶段把源程序从一种表示变换成另一种表示 本章 通过描述编译器的各个阶段来介绍编译这个课题 1 引论 内容提要
8 .1.1 编译器 概述 第 1 章 引论
9 .1.1 编译器概述 基本流程 词法分析 器 语法分析 器 语义分析 器 源程序 中间代码 生成器 独立于机器的代码优化 器 代码生成器 依赖于机器的代码优化 器 目标机器代码 符号 表
10 .1.1 编译器概述 词法 分析 符 号 表 position initial rate . . . . . . . . . 1 2 3 词法分析器 i d, 1 = id, 2 + id, 3 60 position = initial + rate 60 记号流 字符流
11 .表达式的语法特征 任何一个标识符都是表达式 任何一个数都是表达式 如果 e 1 和 e 2 都是表达式,那么 e 1 + e 2 e 1 e 2 (e 1 ) 也都是表达式 1.1 编译器概述 语法分析 表达式 表达式 表达式 标识符 (initial ) 表达式 表达式 标识符 (rate) 数 (60) + initial + rate 60 的 分析树
12 .1.1 编译器概述 语法分析 符 号 表 position initial rate . . . . . . . . . 1 2 3 语法分析器 i d, 1 = id, 2 + id, 3 60 = + 60 i d, 1 id, 2 id, 3 语法树 记号流
13 .1.1 编译器概述 语义 分析 符 号 表 position initial rate . . . . . . . . . 1 2 3 语义分析器 = + 60 i d, 1 id, 2 id, 3 = + inttofloat i d, 1 id, 2 id, 3 60 语法树 语法树
14 .1.1 编译器概述 中间代码生成 符 号 表 position initial rate . . . . . . . . . 1 2 3 中间代码生成器 t1 = inttofloat(60) t2 = id3 t1 t3 = id2 + t2 id1 = t3 = + inttofloat i d, 1 id, 2 id, 3 60 三地址 中间代码 语法树
15 .1.1 编译器概述 代码优化 代码优化器 t1 = inttofloat (60) t2 = id3 t1 t3 = id2 + t2 id1 = t3 t1 = id3 60.0 id1 = id2 + t1 三地址 中间代码 三地址 中间代码 符 号 表 position initial rate . . . . . . . . . 1 2 3
16 .1.1 编译器概述 代码生成 符 号 表 position initial rate . . . . . . . . . 1 2 3 代码生成器 MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 t1 = id3 60.0 id1 = id2 + t1 三地址 中间代码 汇编 代码
17 .后 端 前端 1.1 编译器概述 编译器的阶段分组 词法分析 器 语法分析 器 语义分析 器 源程序 中间代码 生成器 独立于机器的代码优化 器 代码生成器 依赖于机器的代码优化 器 目标机器代码 符号 表
18 .1.1 编译器概述 编译器的阶段分组 词法分析 器 语法分析 器 语义分析 器 源程序 中间代码 生成器 独立于机器的代码优化 器 代码生成器 依赖于机器的代码优化 器 目标机器代码 符号 表 遍
19 .1.1 编译器概述 解释器与编译器区别 词法分析 器 语法分析 器 语义分析 器 源程序 中间代码 生成器 独立于机器的代码优化 器 代码生成器 依赖于机器的代码优化 器 目标机器代码 符号 表 解释器不生成目标代码,而是直接执行源程序所指定的运算 解释器也需要对源程序进行词法、语法和语义分析 , 中间代码生成
20 .BASIC 年代的解释器 功能:它将高级语言的源程序翻译成一种中间语言程序,然后对中间语言程序进行解释执行 在那个年代,编译和解释两个功能是合在一个程序中,该程序被称为解释器 Java 年代的解释器 上述两个功能分在两个程序中 前一个叫做编译器,它把源程序翻译成一种叫做字节码的中间语言程序 后一个叫做解释器,它对字节码程序进行解释 执行 1.1 编译器概述 解释器
21 .1.2 编译器技术的应用 第 1 章 引论
22 .高级编程语言易于编程,但程序运行较慢 低级语言 编程时可实施更有效的控制方式,得到更有效的代码,但难编写、易出错、难维护 流行 编程语言的大多数演变都是朝着提高抽象级别的方向 每 一轮编程语言新特征的出现都刺激编译器优化的新 研究 支持 用户定义的聚合数据类型和高级控制流,如数组和记录、循环和过程调用: C 、 Fortran 面向对象的主要概念是数据抽象和性质继承,使得程序更加模块化并易于维护: Smalltalk 、 C++ 、 C# 、 Java 类型安全的语言: Java 没有指针,也不允许指针算术。它用无用单元收集机制来自动地释放那些不再使用的变量占据的内存 Java 设计来支持代码移植和代码 移动 1.2 编译器技术的应用 高级语言的实现
23 .针对计算机体系结构的 优化:计算机体系结构的迅速演化引起对新的编译器技术一种不知足的需要 并行化 编译 器重新整理指令,使得指令级并行更有效 编译器 从传统的串行程序自动生成并行代码,使之运行于多处理器上 内存分层 编译器 优化历来集中在优化处理器的执行上,但是现在更强调要使内存分层更有效 新计算机体系结构的设计 现在计算机系统的性能不仅仅取决于它的原始速度,还取决于编译器是否能生成充分利用其特征的代码 在现代计算机体系结构的研究中,在处理器的设计阶段就开发编译器,并将编译生成的代码在模拟器上运行,以评价拟采用体系结构的特征 编译器技术影响计算机体系结构设计的一个著名例子是精简指令集计算机( RISC )的 发明 1.2 编译器技术的应用 与计算机体系结构的相互促进
24 .二进制翻译 编译器 技术可用于把一种机器的二进制代码翻译成另一种机器的代码,以运行原先为别的指令集编译的代码 数据库 查询解释器 数据库 查询由一些谓词组成,这些谓词由包含关系运算的布尔表达式组成,可以被解释 执行,也 可以被编译成搜索数据库的命令 1.2 编译器技术的应用 程序翻译
25 .源于编译器中代码优化技术的程序分析一直 在改进 软件开发效率 类型检查 类型 检查是一种捕捉程序中前后不一致的成熟而有效的技术 边界 检查 数据流分析 技术可用来定位缓冲区溢出 内存 管理 自动 的内存管理删除内存泄漏等内存管理错误 1.2 编译器技术的应用 提高软件开发效率的工具
26 .翻译器 、编译器、 解释器 的 概念 编译器 的典型阶段 1 引论 本章要点