compiler7 - 1 编译原理 第七章 代码优化...

Info icon This preview shows pages 1–8. Sign up to view the full content.

View Full Document Right Arrow Icon
1 编译原理 第七章 代码优化 上海交通大学 张冬茉 Email:[email protected] 2015 3
Image of page 1

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
2 本章目的 代码优化是从生成的目标代码 中识别出那些可以经过变换而提高效 率的部分,并实施这种变换。这种优 化并不是极值理论中的那种求极值点 的优化,它只追求变换后的代码要比 变换前的效率要高些。
Image of page 2
3 第七章 代码优化 §7.1 优化概述 一、优化定义 优化是一种等价、有效的程序变换。等价是指不改 变程序运行结果,即对变换前后的程序给以相同的 输入,应有相同的输出,即变换是安全的。 而有效是指经变换后的程序与变换前的程序相比运 行速度更快,所占空间更少,也即所谓时空效益要 高。时间短空间省,这两个要求可以是相容的,并 行不悖的。数据不相关的两个循环,经循环合并构 成一个循环,循环控制的开销节省了,代码长度也 因此缩短了。但有时,时间短空间省的要求可能会 不可兼得,这时就有牺牲时间换取空间或牺牲空间 换取时间两种策略,需要有个综合分析和实事求是 的取舍。
Image of page 3

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
4 二、不同阶段的优化 (1) 优化可以在源程序阶段也可以在编译阶段进行 (2) 编译优化又可分成两个阶段,即中间代码优化与 目标代码优化 :编译优化工作中有一部分与目 标机有关,有效而合理地使用机器资源便是目标 代码优化阶段要实现的 (3) 中间代码的优化有局部化与非局部优化之分。 局部优化是指基本块内的优化,非局部优化是指 超越基本块的优化,因此对中间代码划分基本块 ,是优化所必需的。 (4) 非局部优化也有循环优化与全书局优化之分, 将中间代码以基本块为结点,构造出程序流图, 从中识别出循环结构
Image of page 4
5 优化 源程序优 编译优化 中间代码 优化 目标代码 优化 非局部优 局部优化 循环优化 全局优化 7.1 在各个阶段的优化
Image of page 5

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
6 三、程序流图的构造 程序流图是程序的图形表示。我们把有唯一首结 n0 的有向图 G 称为控制流程图。首结点 n0 是到图中任何结点 n 都有道路 n0 n 的一个特 殊的结点。因此控制流程图是一个三元组 G=(N E n0) ,其中 N 为结点集 ( 包括 n0) E 为有向边集。通常将控制流程图简称为流 图,或程序流图。对一个程序流图来说,结点 代表计算,有向边代表控制流,而首结点是程 序起始位置所在的结点 ( 基本块 ) 1. 基本块 基本块是程序语句序列中满足下列条件的长度最 长的子序列:这个语句子序列是顺序执行的; 它只有一个入口即子序列的第一语句;只有一 个出口即子序列的最后一个语句。停止语句和 转向 ( 分支 ) 语句只可能是基本块的最末一个
Image of page 6
7 2. 划分基本块的算法 输入:三地址语句序列。
Image of page 7

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 8
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern