石河子大学:《编译原理》课程教学资源(PPT课件)第十一章 代码优化

参考文献 11.1 优化概述 《程序设计语言编译原理》 (第二版) 陈火旺等国防工业出版社 第9章第1节 《编译原理和技术》 (第一版) 陈意云 中国科学技术大学出版社 第9章第1节、第9章第2节 《编译原理和技术》 (第二版) 陈意云 中国科学技术大学出版社 第9章第1节、第9章第2节 《编译原理及实践》 Kenneth C.Louden(美) 冯博琴等译机械工业出版社 第8章第9节
《程序设计语言 编译原理》(第二版) 陈火旺等 国防工业出版社 第9章 第1节 《编译原理和技术》(第一版) 陈意云 中国科学技术大学出版社 第9章 第1节、第9章 第2节 《编译原理和技术》(第二版) 陈意云 中国科学技术大学出版社 第9章 第1节、第9章 第2节 《编译原理及实践》 Kenneth C. Louden (美) 冯博琴 等 译 机械工业出版社 第8章 第9节

11.1 优化概述 参考文献 Compilers principles,techniques,and tools (2001) Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman. 第11章第1节、第11章第2节 Crafting a Compiler with C (1991), Charles N.Fischer,Richard J.LeBlanc Jr. 第16章第1节 《现代编译程序设计》 冯博琴等译 第4章第2节第11小节
Compilers :principles, techniques, and tools (2001), Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. 第11章 第1节、第11章 第2节 Crafting a Compiler with C(1991), Charles N. Fischer, Richard J. LeBlanc Jr. 第16章 第1节 《现代编译程序设计》 冯博琴等译 第4章 第2节 第11小节

11.1 优化概述 本节内容 一.代码优化概念、目的与原则 二.代码优化器的地位和结构 三.代码优化分类 四.代码优化涉及的各个环节 五.四元式的改写 六.引例:优化主要方法简介
一. 代码优化概念、目的与原则 二. 代码优化器的地位和结构 三. 代码优化分类 四. 代码优化涉及的各个环节 五. 四元式的改写 六. 引例:优化主要方法简介

代码优化既念、目的与原贝 对程序进行各种等价变换,使得从变换后的程序出发,能 生成更有效的目标代码,我们通常称这种变换为优化。 优化的目的是为了产生更高效的代码。 优化的原则: (1)等价原则 应尽可能以较低的代价 取得较好的优化效果。 (2)有效原则 (3)合算原则
优化的目的是为了产生更高效的代码。 对程序进行各种等价变换,使得从变换后的程序出发,能 生成更有效的目标代码,我们通常称这种变换为优化。 优化的原则: (1)等价原则 (3)合算原则 (2)有效原则 经过优化后不应改变 程序运行的结果。 使优化后所产生的目标 代码运行时间较短,占 用的存储空间较小。 应尽可能以较低的代价 取得较好的优化效果

二。个代预马允匕署器的地立乔回肯勾 1编译前端 伐码优化器下代码生成! 控制流分析 数据流分析 代码变换
编译前端 代码优化器 代码生成 控制流分析 数据流分析 代码变换

三。代码优化分类 1.按所处阶段分类 最主要一类优化是在目标代码生成以前,对语法分析后 的中间代码进行的。这类优化不依赖于具体的计算机。 另一类重要的优化是在生成目标代码时进行的这 类优化很大程序上依赖于具体的计算机。 优化可在编译的各个阶段进行
另一类重要的优化是在生成目标代码时进行的这 类优化很大程序上依赖于具体的计算机。 优化可在编译的各个阶段进行 最主要一类优化是在目标代码生成以前,对语法分析后 的中间代码进行的。这类优化不依赖于具体的计算机。 1. 按所处阶段分类

三。代码优化分类 2.按所涉及范围 局部优化 单个基本块内 循环优化 可能涉及多个基本块 全局优化 涉及所有代码
单个基本块内 局部优化 2. 按所涉及范围 循环优化 涉及所有代码 全局优化 可能涉及多个基本块

四。代码优化涉及的各个环节 源代码 考虑产生更加高效的 设计语义 有效地利用寄存器 及,进 动作时 选择指令 中间代码 作 本章讨论的重点 目标代码 窥孔优化
选择适当的算法 源代码 安排适当的实现语句 源代码的优化很重要 设计语义 动作时 考虑产生更加高效的 中间代码 为后面的优化阶段做一些 中间代码 可能的预备工作 安排专门的优化阶段,进 行各种等价变换 本章讨论的重点 目标代码 有效地利用寄存器 选择指令 窥孔优化

五。四元式的改写 (:=,B,,A) 改写成 A:=B (op,B,,A) 改写成 A:=op B (op,B,C,A) 改写成 A:=B op C (=□,B,C,A) 改写成 A:=B[C] (]=,B,,D[C]) 改写成 D[C]=B (jrop,B,C,L) 改写成 if B rop C goto L (j L) 改写成 goto L
( := , B, , A) 改写成 A:=B (op , B, , A) 改写成 A:=op B (op , B, C, A) 改写成 A:=B op C (=[], B, C, A) 改写成 A:=B[C] ([]=,B, ,D[C]) 改写成 D[C]:=B (jrop, B, C, L) 改写成 if B rop C goto L (j , , , L) 改写成 goto L

六。引例:优化主要 T6=T11=4*灯 1.快速排序子程序:C语言-〉 x :a x:=a[Tl void quicksort (m,n); T7T12=4*1 int m,n; x=ali]; T8=T13=4*n int t x ali]; T14=aT1] f( a叮=a[n]i a[T]a[T2:=T14 i=m B1 while a[n]x; T1三T15=4*n B2 B3] aT]aTsl=× if(i> B4 goto E x=a B5 x=ali doj=j-1; 4*灯 while (a[j]v); Ts :a[T4] if Ts>v goto B3
1. 快速排序子程序: C语言-〉原始中间代码 B6 B1 B2 B3 B4 B5 i = m -1; j = n; v = a[n]; i := m-1 j := n T1 := 4*n v := a[T1] do i = i + 1; while (a[i] v); j := j-1 T4 := 4*j T5 := a[T4 ] if T5>v goto B3 if (i >= j) break; if i>=j goto B6 x = a[i]; a[i] = a[j]; a[j] = x; T6 := 4*i x := a[T6 ] T7 := 4*i T8 := 4*j T9 := a[T8 ] a[T7 ] := T9 T11 := 4*j a[T11] := x goto B2 x = a[i]; a[i] = a[n]; a[n] = x; T11 := 4*j x := a[T11] T12 := 4*i T13 := 4*n T14 := a[T13] a[T12] := T14 T15 := 4*n a[T15] := x
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 石河子大学:《编译原理》课程教学资源(PPT课件)第六、七章 语法分析——自下而上分析.ppt
- 石河子大学:《编译原理》课程教学资源(PPT课件)第八章 语法制导翻译和中间代码生成.ppt
- 石河子大学:《编译原理》课程教学资源(PPT课件)第九章 符号表.ppt
- 石河子大学:《编译原理》课程教学资源(PPT课件)第四章 词法分析.ppt
- 石河子大学:《编译原理》课程教学资源(PPT课件)第五章 语法分析——自上而下分析.ppt
- 石河子大学:《编译原理》课程教学资源(PPT课件)第三章 文法和语言.ppt
- 石河子大学:《编译原理》课程教学资源(PPT课件)第一章 引论(负责人:张丽、郑瑶).ppt
- 清华大学出版社:《编译原理习题与解析》课程教学资源(辅导书电子版,编著:伍春香,第2版,共13章).pdf
- 石河子大学:《编译原理》课程教学资源(试卷习题)软件编译程序练习题附答案.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)编译原理考试题及答案汇总.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)编译原理复习题及答案.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第十套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第八套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第九套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第六套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第七套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第四套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第五套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第三套.doc
- 石河子大学:《编译原理》课程教学资源(试卷习题)第二套.doc
- 石河子大学:《编译原理》课程教学资源(PPT课件)第十章 运行时空间组织.ppt
- 中国科学技术大学:《编译原理》课程教学资源(教程)编译原理实验教程(草稿).pdf
- 《编译原理》课程教学资源(书籍文献)Lex和Yacc从入门到精通.pdf
- 计算机科学丛书:《编译原理》书籍PDF电子版(美)Alfred V.Aho Monica s.Lam Ravi Sethi Jeffrey D.Ullman,机械工业出版社,中文第二版,共12章.pdf
- 西北工业大学:《编译原理》课程教学资源(PPT课件)编译原理课程设计指南.ppt
- 兰州大学:《编译原理》课程电子(PPT教学课件)第一讲 引论 CompilerPrinciples.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第六章 LR分析程序及其自动构造.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第一章 概述.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第三章 词法分析.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第九章 符号表.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第二章 PL/0编译程序.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第五章 LL(1)文法及其分析程序.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第八章 语法制导翻译和中间代码生成.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第十一章 代码优化.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第十二章 代码生成.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)RUN-Time Organization.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第十章 目标程序运行时的组织.ppt
- 清华大学:《编译原理》课程教学资源(PPT课件)第四章 文法和语言.ppt
- 西北工业大学:《编译原理》课程教学资源(PPT课件)编译原理知识点回顾(主讲:林奕).ppt
- 西北工业大学:《编译原理》课程教学资源(PPT课件)语法分析程序的自动生成工具YACC简介.ppt