第一章 引 论 名词解释 编译器从逻辑上可以分成若干个阶段 每个阶段把源程序从一种表示变换成另一种表示

Slides:



Advertisements
Similar presentations
1 计算机软件考试命题模式 计算机软件考试命题模式 张 淑 平 张 淑 平. 2  命题模式内容  组织管理模式 − 命题机构和人员组成 − 命题程序  试卷组成模式.
Advertisements

高校教师、高级项目经理 任铄 QQ : 第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性 1.4 操作系统的主要功能 1.5 OS 结构设计.
深入浅出 JVM—— 入门 第 1 讲 JVM 概述 讲师:葛一鸣 微博: QQ 群:
编译原理和技术 大连理工软件学院 江 贺 课 程 简 介课 程 简 介课 程 简 介课 程 简 介 教材和参考书 陈意云、张昱,编译原理,高等教育出版社, 2003 Louden, K.C, 《编译原理及实践(英文版)》. 中信出版社 Alfred V.Aho,
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
2017年3月5日 单片机原理与应用 背景知识调查.
Tool Command Language --11级ACM班 金天行.
编译原理和技术.
编译原理实践及应用 ----清华大学出版社.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
实用操作系统概念 张惠娟 副教授 1.
中国科学技术大学 计算机科学与技术学院 陈意云
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
计算机基础知识 丁家营镇九年制学校 徐中先.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
张昱 中国科学技术大学 计算机科学技术系 合肥
引论 赵建华 南京大学计算机系 2009年2月.
Chinese Virtual Observatory
编译原理与技术 2018/11/30 《编译原理与技术》讲义.
管理信息结构SMI.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
编译器设计与实现 梁红瑾
第二章 Java语言基础.
逆向工程-汇编语言
CPU结构和功能.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
《编译原理与技术》 期末复习 计算机科学与技术学院 郑启龙 李 诚 25/12/2018.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
程序设计工具实习 Software Program Tool
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
$9 泛型基础.
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
编译原理.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
项目二:HTML语言基础.
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
<编程达人入门课程> 本节内容 计算机编程语言 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
编译原理及实现技术 计算机科学与技术学院 申春
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 学习路线 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java基本语法 讲师:复凡.
第二节 C语言的特点.
本节内容 结构体.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
编译原理 编译原理.
数据表示 第 2 讲.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
Presentation transcript:

第一章 引 论 名词解释 编译器从逻辑上可以分成若干个阶段 每个阶段把源程序从一种表示变换成另一种表示 第一章 引 论 名词解释 翻译器(translator)、编译器(compiler) 解释器(interpreter) 编译器从逻辑上可以分成若干个阶段 每个阶段把源程序从一种表示变换成另一种表示 本章通过描述编译器的各个阶段来介绍编译这个课题

1.1 编译器概述 源程序 符号表 词法分析器 语法分析器 代码生成器 语义分析器 中间代码生成器 目标机器代码 独立于机器的代码优化器 依赖于机器的代码优化器 目标机器代码 符号表

position = initial + rate  60 1.1 编译器概述  字符流 词法分析器 id, 1 = id, 2 + id, 3  60 position = initial + rate  60 符 号 表 position initial rate . . . 1 2 3  记号流

1.1 编译器概述 表达式的语法特征 任何一个标识符都是表达式 任何一个数都是表达式 如果e1和e2都是表达式,那么  e1 + e2 也都是表达式 表达式 标识符 (initial) (rate) 数 (60) * + 先介绍语法,然后才介绍语法分析。 initial + rate * 60的分析树

id, 1 = id, 2 + id, 3  60 1.1 编译器概述  记号流 语法分析器 id, 1 = id, 2 + id, 3  60 = +  60 id, 1 id, 2 id, 3 符 号 表 position initial rate . . . 1 2 3  语法树

1.1 编译器概述  语法树  语法树 语义分析器 = +  60 id, 1 id, 2 id, 3 inttofloat  语法树 符 号 表 position initial rate . . . 1 2 3  语法树

1.1 编译器概述  语法树  三地址中间代码 中间代码生成器 t1 = inttofloat(60) t2 = id3  t1 = +  inttofloat id, 1 id, 2 id, 3 60  语法树 符 号 表 position initial rate . . . 1 2 3  三地址中间代码

1.1 编译器概述  三地址中间代码  三地址中间代码 代码优化器 t1 = inttofloat(60) t2 = id3  t1 id1 = id2 + t1 符 号 表 position initial rate . . . 1 2 3  三地址中间代码

1.1 编译器概述  三地址中间代码  汇编代码 代码生成器 MOVF id3, R2 MULF #60.0, R2 ADDF R2, R1 MOVF R1, id1 t1 = id3 * 60.0 id1 = id2 + t1  三地址中间代码 符 号 表 position initial rate . . . 1 2 3  汇编代码

1.1 编译器概述 解释器和编译器的区别 解释器也需要对源程序进行词法、语法和语义分析,中间代码生成 解释器不生成目标代码,而是直接执行源程序所指定的运算 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 独立于机器的代码优化器 代码生成器 依赖于机器的代码优化器 目标机器代码

1.1 编译器概述 BASIC年代的解释器 Java年代的解释器 功能:它将高级语言的源程序翻译成一种中间语言程序,然后对中间语言程序进行解释执行 在那个年代,编译和解释两个功能是合在一个程序中,该程序被称为解释器 Java年代的解释器 上述两个功能分在两个程序中 前一个叫做编译器,它把源程序翻译成一种叫做字节码的中间语言程序 后一个叫做解释器,它对字节码程序进行解释执行

1.1 编译器概述 阶段分组 前端 后端 源程序 词法分析器 语法分析器 代码生成器 语义分析器 中间代码生成器 目标机器代码 独立于机器的代码优化器 代码生成器 依赖于机器的代码优化器 目标机器代码

1.1 编译器概述 阶段分组 遍 源程序 词法分析器 语法分析器 代码生成器 语义分析器 中间代码生成器 目标机器代码 独立于机器的代码优化器 代码生成器 依赖于机器的代码优化器 目标机器代码

1.2 编译器技术的应用 高级语言的实现 高级编程语言易于编程,但程序运行较慢 1.2 编译器技术的应用 高级语言的实现 高级编程语言易于编程,但程序运行较慢 低级语言编程时可实施更有效的控制方式,得到更有效的代码,但难编写、易出错、难维护 流行编程语言的大多数演变都是朝着提高抽象级别的方向 每一轮编程语言新特征的出现都刺激编译器优化的新研究

1.2 编译器技术的应用 高级语言的实现 每一轮编程语言新特征的出现都刺激编译器优 化的新研究 1.2 编译器技术的应用 高级语言的实现 每一轮编程语言新特征的出现都刺激编译器优 化的新研究 支持用户定义的聚合数据类型和高级控制流,如数组和记录、循环和过程调用:C、Fortran 面向对象的主要概念是数据抽象和性质继承,使得程序更加模块化并易于维护:Smalltalk、C++、C#、Java 类型安全的语言:Java没有指针,也不允许指针算术。它用无用单元收集机制来自动地释放那些不再使用的变量占据的内存 Java设计来支持代码移植和代码移动

1.2 编译器技术的应用 针对计算机体系结构的优化 计算机体系结构的迅速演化引起对新的编译器技术一种不知足的需要 并行化 1.2 编译器技术的应用 针对计算机体系结构的优化 计算机体系结构的迅速演化引起对新的编译器技术一种不知足的需要 并行化  编译器重新整理指令,使得指令级并行更有效  编译器从传统的串行程序自动生成并行代码,使之运行于多处理器上 内存分层  编译器优化历来集中在优化处理器的执行上,但是现在更强调要使内存分层更有效

1.2 编译器技术的应用 新计算机体系结构的设计 现在计算机系统的性能不仅仅取决于它的原始速度,还取决于编译器是否能生成充分利用其特征的代码 1.2 编译器技术的应用 新计算机体系结构的设计 现在计算机系统的性能不仅仅取决于它的原始速度,还取决于编译器是否能生成充分利用其特征的代码 在现代计算机体系结构的研究中,在处理器的设计阶段就开发编译器,并将编译生成的代码在模拟器上运行,以评价拟采用体系结构的特征 编译器技术影响计算机体系结构设计的一个著名例子是精简指令集计算机(RISC)的发明

1.2 编译器技术的应用 程序翻译 二进制翻译 编译器技术可用于把一种机器的二进制代码翻译成另一种机器的代码,以运行原先为别的指令集编译的代码 数据库查询解释器 数据库查询由一些谓词组成,这些谓词由包含关系运算的布尔表达式组成,可以被解释执行,也可以被编译成搜索数据库的命令

1.2 编译器技术的应用 提高软件开发效率的工具 源于编译器中代码优化技术的程序分析一直在 改进软件开发效率 类型检查 1.2 编译器技术的应用 提高软件开发效率的工具 源于编译器中代码优化技术的程序分析一直在 改进软件开发效率 类型检查 类型检查是一种捕捉程序中前后不一致的成熟而有效的技术 边界检查 数据流分析技术可用来定位缓冲区溢出 内存管理 自动的内存管理删除内存泄漏等内存管理错误