Download presentation
Presentation is loading. Please wait.
1
编译程序 构造原理和实现技术 授课教师:吕江花
2
第一章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径
3
基本概念 机器语言:能够被计算机的硬件系统直 接执行的指令程序。 汇编语言:将硬件指令用一些助记符表 示。如 ADD 表示加法操作, SUB 表示减法操作等等 高级语言:使用便于理解的自然语言。
4
语言处理程序 解释程序(器):接受所输入的用程序 语言(源语言)编写的程序(源程 序),然后直接解释执行源程序。 相当于源程序的抽象执行机,是语 言的实现系统。 高级语言源程序 计算结果 数据 解释程序 (器)
5
语言处理程序 翻译程序(器):接受某种语言的源语 言程序后,将它改造成另一种逻辑 上等价的目标语言程序。
6
翻译程序 汇编程序:源语言为汇编语言,目标语言 为机器语言的翻译程序。 编译程序(器):源语言为高级语言,目 标语言是低级语言(汇编或机器语言)的 翻译程序。 高级语言程序 (源程序) 低级语言程序 (目标程序) 编译程序 (器)
7
需预处理的源程序 预处理器 源程序 编译程序 目标汇编程序 汇编程序 可重定位的目标代码 连接 / 装配程序 绝对目标代码
8
解释器和编译器特点 概念上的不同 基于解释执行的程序可以动态修改自身, 而基于编译执行的程序则需要动态编译技 术,难度较大。 基于解释方式有利于人机交互。 执行速度。解释器执行速度要慢。 空间开销。 解释器需要保存的信息较多, 空间开销大 利用解释器可自动生成编译器 二者实现技术相似。
9
编译器的功能结构图 表 处 理表 处 理 错 误 处 理错 误 处 理 目标代码生成目标代码生成 中间代码优化中间代码优化 中间代码生成中间代码生成 语义分析语义分析 语法分析语法分析 词法分析词法分析 目标程序目标程序 源程序源程序
10
词法分析 (Lexical Analysis) 依循语言的词法规则,扫描源程序的字 符串,识别每一个单词,并将其表示成 所谓的机内表示 TOKEN 形式。 语法分析( Syntax Analysis) 依据语言的语法规则,将单词的 Token 序 列分解成各类语法短语,确定整个输入 串是否构成一个语法上正确的程序。 语义分析( Semantic Analysis ) 审查源程序有无语义错误,为代码生成 阶段收集类型信息。
11
中间代码生成 ( Intermediate Code Generate ) 将源程序转换成一种称为中间代码的内 部表示形式。中间代码是一种简单的含义 明确的记号系统。 中间代码优化( Code Optimization ) 变换或改造中间代码,生成的目标代码 更为高效,即节省时间和空间。 目标代码生成( Code Generation ) 中间代码变换为特定机器上的绝对指令代码 或可重定位的指令代码或汇编指令代码。
12
表格管理( Symbol-Table Management) 为了合理的管理表格(构造、查找、更 新),设立一些专门子程序称为表格管 理程序负责管理表格。 错误处理( Error Detection and Reporting) 各个阶段还存在着错误处理模块,当有错 误出现时,由相应的错误处理模块给出 解决方案,使得编译器能够继续进行下 去。
13
编译程序的实现途径 预处理方法 用于语言的扩充。设已有 L 语言的编译器,其扩充语言 L1 的 编译器可通过语言转换程序将 L1 程序转换为 L 程序,利用 L 的 编译器,从而实现 L1 的编译器。 移植法 同一语言的编译器在不同机器间的移植。方法: a 目标代码的转换 b 修改中间代码到目标代码的转换 自展法 自我扩展,自己编写自己的编译器 。 工具法 利用编译阶段各个部分的自动生成工具自动生成。 理论法 利用形式化描述理论,实现自动化。
14
编译程序的作用 理解语言,编写出高效的代码 灵活设计实现自定义语言 提高软件设计技术 应用于涉及元级操作的实现 其它领域
15
第二章 一个微小语言 Micro 的 编译器
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.