编译原理和技术教学PPT课件.ppt

第一章 引 论 中间代码生成器 temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 := + * 60 id1 id2 id3 inttoreal (优秀的) 名词 (大工学子) 宾语 定语 宾语 形容词 语句 谓语 动词 (是) 主语 名词 (你们) 英语文本生成 You are good DLUTers. 第一章 引 论 代码优化器 temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 temp1 := id3 * 60.0 id1 := id2 + temp1 You are good DLUTers. 英语文本改进 You are excellent DLUTers 第一章 引 论 temp1 := id3 * 60.0 id1 := id2 + temp1 代码生成器 MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 日语文本生成 You are excellent DLUTers 君たちは大連理工大学の 優秀な学生なんです。 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理器 后三个阶段对源程序进行综合 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理器 分析和综合: 把编译过程分成分析和综合两步 分析:分析源程序以计算其特性所涉及到的操作(词法分析、语法分析、语义分析) 综合:生成目标代码时所涉及到的操作(中间代码生成、代码优化、代码生成) 辅助:符号表管理、出错处理 8项功能对应8个模块。 第一章 引 论 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理器 前端 后端 前端:依赖于源语言,独立于目标机器。 后端:依赖于目标机器,独立于源语言。 前端和后端: 把编译过程分成前端和后端两部分 前端:只依赖于源程序,独立于目标机器 (生成中间代码) 后端:依赖于目标机器,与源程序无关,只与中间语言有关(从中间代码生成目标代码) 好处:提高开发编译器的效率 取一个编译器的前端,重写它的后端以产生同一源语言在另一机器上的编译器 不同的前端使用同一个后端,从而得到一个机器上的几个编译器(采用同一中间语言) 第一章 引 论 第一章 引 论 源程序 目标机器1 目标机器2 目标机器3 目标机器n 编译器 不区分前端和后端的编译器 源程序 目标机器1 目标机器2 目标机器3 目标机器n 编译器前端 编译器后端 区分前端和后端的编译器 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理器 遍 编译的几个阶段常用一遍(pass)扫描实现,一遍扫描包括读一个输入文件和写一个输出文件。 第一章 引 论 遍 类比:刷墙艺术中的“遍”的概念 网线 水泥 瓷砖 任务:在一面墙上布置网线,并粉刷水泥,然后贴上瓷砖 第一章 引 论 遍 类比:刷墙艺术中的“遍”的概念 方法一: 第一遍:布上全部网线 网线 水泥 瓷砖 第一章 引 论 遍 类比:刷墙艺术中的“遍”的概念 方法一: 第二遍:粉刷全部墙面的水泥 网线 水泥 瓷砖 第一章 引 论 遍 类比:刷墙艺术中的“遍”的概念 方法一: 第三遍:给整个墙面贴上瓷砖 网线 水泥 瓷砖 第一章 引 论 遍 类比:刷墙艺术中的“遍”的概念 方法二: 一遍:一边布网线,一边粉刷水泥,一边贴瓷砖 网线 水泥 瓷砖 遍(趟): 一遍或一趟:是指编译程序在编译时刻把源程序或源程序的等价物(中间程序)从头到尾扫描一遍并转换成另一紧邻的等价物的全过程。 单遍扫描与多遍扫描:每一遍的扫视可完成上述一个阶段或多个阶段的工作。每一遍的输入都是上一遍的输出,第一遍的输入是源程序正文,最后一遍的输出是目标代码。 单遍与多遍的比较: 遍数多:编译器结构清晰,但时间效率不高 遍数少:编译速度快,但对机器的内存要求高

文档评论(0)

1亿VIP精品文档

相关文档