- 0
- 0
- 约4.69千字
- 约 42页
- 2018-11-05 发布于广西
- 举报
* * * * * * * * * * * * * * * * * * * 中间表示(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年代,研究使用自展技术 编译器设计最近的发展
您可能关注的文档
- 比赛简介(精品·公开课件).ppt
- 比赛形式(精品·公开课件).ppt
- 比赛用(精品·公开课件).ppt
- 比万能险还万能的保险---财富人生(精品·公开课件).ppt
- 比一比课件(精品·公开课件).ppt
- 比尾巴公开课(精品·公开课件).ppt
- 笔Υ蟀嫔系课《为争取民主共和而战》精品课件(共40页)(精品·公开课件).ppt
- 笔记本市场分析(精品·公开课件).ppt
- 笔记管理软件 onenote2010简介(精品·公开课件).ppt
- 笔克08年会(精品·公开课件).ppt
- 2026年安徽省淮南市重点学校小升初数学考试真题试卷+解析及答案.docx
- 2026年河南省信阳市重点学校初一入学数学分班考试试题及答案.docx
- 2026年安徽铜陵市高职单招职业适应性测试考试真题及答案.docx
- 2026年安徽省淮南市重点学校小升初英语考试真题卷.docx
- 2026年及未来5年跳高垫子项目市场数据调查、监测研究报告.docx
- 2026年安徽铜陵市高职单招数学试题(附答案.docx
- 2026年河南省信阳市重点学校高一英语分班考试试题及答案.docx
- 2026年安徽省淮南市重点学校小升初英语考试真题试卷(含答案).docx
- 2026年及未来5年轻质门项目市场数据调查、监测研究报告.docx
- 2026年安徽省淮南市重点学校小升初数学考试题库(附含答案).docx
最近下载
- YJK建筑结构的鉴定和加固设计.ppt
- 深度解析(2026)GBT 528-2009硫化橡胶或热塑性橡胶 拉伸应力应变性能的测定.pptx VIP
- 深度解析(2026)《GBT 42278-2022硫化橡胶 热拉伸应力的测定》.pptx VIP
- 深度解析(2026)《GBT 41941-2022硫化橡胶 疲劳裂纹扩展速率的测定》.pptx VIP
- 计算机系统结构张晨曦王志英(高等教育)课后答案.doc VIP
- 黄金投资技巧与心态.doc VIP
- 深度解析(2026)《GBT 6398-2017金属材料 疲劳试验 疲劳裂纹扩展方法》(2026年)深度解析.pptx VIP
- 贵州省独山县城关镇地区锑矿找矿前景分析.doc VIP
- “双碳”目标下山西省煤炭行业公正转型路径研究--就业专题(二期).docx
- 必知的黄金白银投资技巧.doc VIP
原创力文档

文档评论(0)