编译原理 第一章概论(精品·公开课件).pptVIP

  • 0
  • 0
  • 约4.69千字
  • 约 42页
  • 2018-11-05 发布于广西
  • 举报

编译原理 第一章概论(精品·公开课件).ppt

* * * * * * * * * * * * * * * * * * * 中间表示(Intermediate Representation) 是语法分析以后到目标代码生成之间的源程序的表现形式,是语义分析的结果 1)编译器分为前端和后端两部分,提高编译器开发效率 2)可以设计针对中间代码的代码优化器 语法树和中间代码都是中间表示 5 代码生成器 代码生成器的任务 代码生成器得到中间代码,并生成目标机器的代码 经常使用汇编语言作为目标代码 与目标机的特性相关:寄存器的数量,地址模式,数据表示等等 例如 a[index]=6用汇编语言表示的目标代码为: a:a的地址 *R :间接寻址 MOV R0,index MUL R0,2 MOV R1,a ADD R1,R0 MOV *R1,6 6 目标代码优化 任务: 改进由代码生成器生成的目标代码,节省执行时间和节约存储空间 优化包括: 选择编址模式提高性能 将速度慢的指令更换为速度快的 删除多余操作 例如: 目标代码是: MOV R0,index MUL R0,2 MOV R1,a ADD R1,R0 MOV *R1,6 优化后: MOV R0,index SHL R0 MOV a[R0],6 7 编译器的主要数据结构 常数表(Literal table) 用来存储程序中用到的常量和字符串 常数表的作用: 通过允许重复使用常量和字符串,常数表对于缩小程序在存储器中的大小显得非常重要 符号表(symbol table) 符号表的信息与标识符有关:函数、变量、常量以及数据类型 与编译器所有阶段交互的符号表: 扫描程序、分析程序或将标识符输入到表格中的语义分析程序 优化阶段和代码生成阶段将利用符号表提供的信息选出适当的代码 标准数据结构——杂凑表(哈希表) 错误处理器 几乎在编译的每一个阶段中都可以诊断出错误 错误处理器能够生成有意义的错误信息并在每一个错误之后恢复编译 1.4 编译器结构中的其他问题 编译器结构 编译器的结构对其可靠性、有效性、可用性以及可维护性都有很大影响 1 分析和综合 分析 分析源程序以计算其特性的编译器操作:词法分析、语法分析、语义分析 综合 将生成翻译代码时所涉及的操作:代码生成 在优化步骤中,分析和综合都有; 这种结构的影响 分析和综合使用不同的实现技术 将分析步骤和综合步骤两者区分开以便发生变化时互不影响是很有用的 2 前端和后端 前端 只依赖源语言的操作,包括:扫描程序、分析程序和语义分析程序、中间代码优化 后端 只依赖目标语言的操作:代码生成器,目标代码优化 这种结构的影响 这一结构对于编译器的可移植性十分重要 编译器结构的实现 在生成目标代码之前编译器重复一或多遍 遍 处理整个源程序或它的中间表示一次 多少次依赖于源语言和目标机器 * * * * * * * * * * * * * * * * * * * * 编译原理及实践 主讲:董敏 hollymin@编译原理 上课时间:周二上午3-4节、周四上午3-4节 上课地点:A1-405 / A1-407 上机地点:南校区机房B3 学习方式:课堂讲解(42学时)+课后作业+上机实践(14学时) 考试成绩:试卷成绩75%+(作业成绩+上机成绩)25% 第一章 概论 学习目标: 掌握:编译的各个阶段 理解:编译程序的概念 了解:解释器,编译程序的结构和组合 1.1 为什么要用编译器 1.2 与编译器相关的程序 1.3 翻译步骤(编译阶段) 1.4 编译器结构中的其他问题 1.1 为什么要用编译器 为什么要用编译器? 编程语言的发展 机器语言 (C7 06 0000 0002) 汇编语言 (MOV x,2) 高级语言 (x=2) 计算机仅能执行机器指令代码,必须有个程序可以将高级语言程序翻译成计算机能够执行的机器代码。 什么是编译器? 编译器是将一种语言翻译成另一种语言的计算机程序 源语言: 编译器的输入, 一般是高级语言编写的程序(如 C,C++) 目标语言:编译器的输出,一般是目标机器的目标代码(如 汇编语言或机器语言) 源程序 编译器 目标程序 解释器和编译器 共同点:都是语言的一个实现系统 不同点: 解释器是源程序的一个执行系统,工作结果得到源程序的执行结果; 编译器是源程序的转换系统,工作结果得到等价于源程序的某种目标程序 解释程序 解释器和编译器 编译程序 源程序 源程序 数据 计算结果 目标程序 编译器的发展 第一个编译程序的出现-- 20世纪50年代早期,主要将算术公式翻译成机器代码FORTRAN编译器 20世纪50年代末,开始研究编译程序的自动生成工具 60年代到70年代,研究使用自展技术 编译器设计最近的发展

文档评论(0)

1亿VIP精品文档

相关文档