Presentation is loading. Please wait.

Presentation is loading. Please wait.

编译技术 授课:胡静.

Similar presentations


Presentation on theme: "编译技术 授课:胡静."— Presentation transcript:

1 编译技术 授课:胡静

2 课程目标 掌握编译的基本理论、常用编译技术。 一个完整的例子: 编译前端使用已有工具:LEX和YACC
能运用所学技术解决实际问题,独立编写编译后端 一个完整的例子: 基于语言:简单的PASCAL语言(SPL) SPL相关资料(程序) 虎书各种参考 2019/1/2 编译原理

3 课程的考核 最终成绩=卷面成绩*0.8+平时成绩*0.2 平时成绩的计算方法 小组考核、组内考核 2019/1/2 编译原理

4 计算机课程间的拓扑关系 2019/1/2 编译原理

5 教学要求 掌握编译程序总体结构 在系统级上认识算法、系统的设计 学习有关的原理、实现方法和技术,了解计算学科的基本方法、思想
具有把握系统的能力 学习有关的原理、实现方法和技术,了解计算学科的基本方法、思想 掌握典型方法。 兼顾语言的描述方法、设计、应用——形式化 能形式化就能自动化 进一步培养“计算机思维能力” 软件系统的非物理性质 2019/1/2 编译原理

6 编译器构造法 好的编译器是计算机科学的缩影
包含大量的技术:贪婪算法(寄存器分配)、启发式搜索技术(列表调度)、图形算法(死码消除)、动态规划(指令筛选)、有穷自动机和下推自动机(扫描和语法分析)、不动点算法(数据流分析) 处理复杂的问题:动态分配、同步、命名、局部化、存储器分层管理、管道调度 提供完整的解决方案:有机的结合算法、软件体系结构和软件工程的各种理论,对棘手问题给出综合性的解答方案。 2019/1/2 编译原理

7 学习成果 理解编译过程各个阶段的工作原理 理解标准编译器各个组成部分的任务 熟悉编译过程各阶段所要解决的问题及其采用的方法和技术
应用所学的技术解决编译器构造过程中所产生的相关问题 理解编译器在生成代码时如何充分利用特定处理器的特征 2019/1/2 编译原理

8 编译技术课程研究什么 什么是编译程序 2019/1/2 编译原理

9 基本概念 用汇编语言或高级语言编写的程序称为源程序。 用目标语言所表示的程序。
目标程序 用目标语言所表示的程序。 目标语言:可以是介于源语言和机器语言之间的“中间语言”,可以是某种机器的机器语言,也可以是某机器的汇编语言。 翻译程序 将源程序转换为目标程序的程序称为翻译程序。它是指各种语言的翻译器,包括汇编程序和编译程序,是汇编程序、编译程序以及各种变换程序的总称。 2019/1/2 编译原理

10 2019/1/2 编译原理

11 源程序的编译执行 2019/1/2 编译原理

12 源程序的解释执行 2019/1/2 编译原理

13 源程序的编译-解释执行 2019/1/2 编译原理

14 什么是编译器 什么是编译程序 预处理器 编译器 汇编器 装配连接编辑 骨架程序 可重定位目标文件库 源程序 目标汇编程序 可重定位机器代码
绝对机器码 可重定位目标文件库 2019/1/2 编译原理

15 源代码 符合人类阅读习惯 符合人类语法定义 使用被命名的结构,例如变量和过程 2019/1/2 编译原理

16 装配语言机器代码 符合硬件需求 包含机器指令,使用寄存器和没有命名的内存地址 对人类来说很难理解 2019/1/2 编译原理

17 例子:输出的装配代码 没有优化的代码 优化后的代码 2019/1/2 编译原理

18 如何转换 转换是一个很复杂的过程 我们需要结构化这个转换过程 源程序语言和目标程序语言是截然不同的 定义中间阶段 每个阶段完成特定的功能
2019/1/2 编译原理

19 一个简单的编译器的结构 2019/1/2 编译原理

20 简单的前端结构 2019/1/2 编译原理

21 词法分析 词法分析也叫线性分析。 任务:分析和识别单词。源程序是由字符序列构成的,此法分析扫描源程序(字符串),根据语言的词法规则分析并识别单词,并以某种编码形式输出。 单词:是语言的基本语法单位,一般语言有四大类单词 首先说明,我们要用一个简单的表达式position := initial+rate*60来说明编译器整个的工作过程。 2019/1/2 编译原理

22 语法分析 语法分析也成为层次分析。 任务:根据语法规则(即语言的文法),分析并识别出各种语法成分,如表达式,各种说明,各种语句,过程,函数,并进行语法正确性检查。 2019/1/2 编译原理

23 语法分析(续) 2019/1/2 编译原理

24 语义分析、生成中间代码 语义分析、生成中间代码。 任务:对识别出的各种语法成分进行语义分析,并产生相应的中间代码。 2019/1/2
编译原理

25 语义分析、生成中间代码(续) 2019/1/2 编译原理

26 语义分析、生成中间代码(续) 2019/1/2 编译原理

27 代码优化 代码优化 任务:目的是为了得到高质量的目标程序 2019/1/2 编译原理

28 生成目标程序 由中间代码很容易生成目标程序(地址指令序列)。这部分工作与机器关系密切,所以需要根据机器进行。在做这部分工作时(要注意充分利用累加器),也可以进行优化处理。 2019/1/2 编译原理

29 全景图 2019/1/2 编译原理

30 编译器的概念模型 表 格 管 理 词法分析程序 出 错 处 理 语法分析程序 语义分析程序 编译的前端 (Front End) 分析部分
与源语言有关 中间代码生成程序 代码优化程序 编译的后端 (Back End) 综合部分 与目标机有关 目标代码生成程序 2019/1/2 编译原理

31 中间表示的重要性 2019/1/2 编译原理

32 2019/1/2 编译原理

33 一遍扫描编译程序 2019/1/2 编译原理

34 Thanks for your time! Questions & Answers
2019/1/2 编译原理


Download ppt "编译技术 授课:胡静."

Similar presentations


Ads by Google