[工学]第01章 编译器概述.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第01章 编译器概述

编译程序设计原理 授课教师:程细柱 第01章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径 1.1 为什么要学编译技术 了解和掌握编译器的构造原理和工作原理。 提高学习者的编程能力和大型软件开发能力。 了解有关程序的各种处理技术。 编译系统是元级软件系统,系统开发需要编译系统的基本技术来支持。 1.2 编译器和解释器 机器语言:能够被计算机的硬件系统直 接执行的指令程序。 汇编语言:将硬件指令用一些助记符表 示。如ADD表示加法操作, SUB表示减法操作等等 高级语言:使用便于理解的自然语言。 编译器:能将源程序(高级语言程序)翻译成目标程序(汇编或机器语言)的程序。 解释器:直接解释执行源程序,相当于源程序的抽象执行机。 解释器和编译器的比较: 概念上的不同。 基于解释执行的程序可以动态修改自身,而基于编译执行的程序则需要动态编译技术,难度较大。 基于解释方式有利于人机交互。 解释器执行速度要慢。 解释器需要保存的信息较多,空间开销大。 利用解释器可自动生成编译器二者实现技术相似。 学习编译程序的好处: 理解语言,编写出高效的代码; 灵活设计实现自定义语言; 提高软件设计技术; 应用于涉及元级操作的实现; 用于其它领域。 词法分析(Lexical Analysis) 依循语言的词法规则,扫描源程序的字符串,识别每一个单词,并将其表示成所谓的机内表示TOKEN形式。 语法分析(Syntax Analysis) 依据语言的语法规则,将单词的Token序 列分解成各类语法短语,确定整个输入 串是否构成一个语法上正确的程序。 语义分析(Semantic Analysis) 审查源程序有无语义错误,为代码生成 阶段收集类型信息。 中间代码生成 (Intermediate Code Generate) 将源程序转换成一种称为中间代码的内 部表示形式。中间代码是一种简单的含义 明确的记号系统。 中间代码优化(Code Optimization) 变换或改造中间代码,生成的目标代码 更为高效,即节省时间和空间。 目标代码生成(Code Generation) 中间代码变换为特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 表格管理(Symbol-Table Management) 为了合理的管理表格(构造、查找、更新),设立一些专门子程序称为表格管理程序负责管理表格。 错误处理(Error Detection and Reporting) 各个阶段还存在着错误处理模块,当有错误出现时,由相应的错误处理模块给出解决方案,使得编译器能够继续进行下去。 1.5 编译器的复杂性 编译程序复杂的原因是: (1)编译程序是元级程序; (2)高级语言和低级语言差距太大;其变换不是结构变换,而是语义的等价变换。 (3)要花费很多时间进行多种优化。 1.6 编译器的实现途径 预处理方法:用于语言的扩充。设已有L语言的编译器,其扩充语言L1的编译器可通过语言转换程序将L1程序转换为L程序,利用L的编译器,从而实现L1的编译器。 移植法:同一语言的编译器在不同机器间的移植。方法: a 目标代码的转换 b 修改中间代码到目标代码的转换 自展法:自我扩展,自己编写自己的编译器。 工具法:利用编译阶段各个部分的自动生成工具自动生成。 理论法:利用形式化描述理论,实现自动化。 1.7 编译程序的测试与维护 测试:即检查编译程序的可靠性;靠人工和经验; 常用方法有:回归测试法,即当编译程序有改动时,对新老编译程序同时测试,看产生的目标代码是否相同。 维护:即试用阶段的修改;关键是要有好的程序结构和文档。 1.8 几个经典编译程序 Pascal编译程序 * 《编译原理》电子教案 韶关学院计算机系程细柱 系别:计算机科学系 源程序 (高级语言程序) 目标程序 (汇编程序) 编译器 源程序 数据 计算结果 解释器 1.3 编译器的功能结构图 目 标 代 码 生 成 中 间 代 码 优 化 中 间 代 码 生 成 语 义 分 析 语 法 分 析 词 法 分 析 目 标 程 序 源 程 序 表 处 理 错 误 处 理 扩展程序 预处理器 标准程序 编译程序 汇编代码 汇编程序 可重定位的代码 连接/装配程序 执行代码 1.4 编译器的伙伴 源程序 第一遍扫描 中间代码 目标代码 第二遍扫描 C编译程序 词法分析器 在源程序的

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档