文档详情

CH10 代码优化和目标代码生成.pdf

发布:2017-07-16约1.09万字共34页下载文档
文本预览下载声明
S.P 词法分析程序 符 语法分析程序 错 号 表 语义分析、生成中间代码 误 处 管 理 代码优化 理 目标代码生成 O.P 编译原理 2017年5月7 日 第10章 代码优化和目标代码生成  二者在编译程序中的逻辑位置  基本块、流图和循环  数据流分析基础  基本块的DAG 表示(局部优化技术)  目标代码生成技术  代码优化技术 编译原理 2017年5月7 日 二者在编译程序中的逻辑位置 词法分析 字符流 语法分析 单词流 语义分析和中间代码生成 语法分析树 机器无关的代码优化 中间表示 目标代码生成 优化的中间表示 目标代码 编译原理 2017年5月7 日 10.1 基本块(basic block)  概念 • 程序中一个顺序执行的语句序列 • 只有一个入口语句和一个出口语句 • 除入口语句外其他语句均不可以带标号 • 除出口语句外其他语句均不可能是转移或停语句  入口语句 • 程序的第一个语句;或者 • 条件转移语句或无条件转移语句的转移目标语句;或者 • 紧跟在条件转移语句后面的语句 编译原理 2017年5月7 日 划分基本块的方法  针对三地址码 (TAC )  步骤 • 求出TAC 程序之中各个基本块的入口语句 • 对每一入口语句,构造其所属的基本块。它是由该语句 到下一入口语句(不包括下一入口语句),或到一转移 语句(包括该转移语句),或到一停语句(包括该停语 句)之间的语句序列组成的 • 凡未被纳入某一基本块的语句,都是程序中控制流程无 法到达的语句,因而也是不会被执行到的语句,可以把 它们删除 编译原理 2017年5月7 日 举例  针对三地址码 (TAC ) *(1) read x  举例 右边TAC 程序可划 (2) read y 分成4 个基本块 *(3) r:=x mod
显示全部
相似文档