《程序设计语言与编译》课程PPT教学课件(高职)第二十四讲 代码优化

第三节代码优化 优化的定义 优化是一种等价的,有效的程序变换 等价—不改变程序运行结果 有效时空效率要高
第三节 代码优化 一. 优化的定义 优化是一种等价的,有效的程序变换 等价——不改变程序运行结果 有效——时空效率要高

不同阶段的优化 1.源程序阶段的优化:考虑DS和算法 2.编译优化—一中间代码优化和目标代码 优化 3.中间代码优化—局部优化和全局优化 局部优化:在基本块内的优化 全局优化:超越基本块,在基本块之间的优 化
二. 不同阶段的优化 1. 源程序阶段的优化:考虑DS和算法 2. 编译优化——中间代码优化和目标代码 优化 3. 中间代码优化——局部优化和全局优化 局部优化:在基本块内的优化 全局优化:超越基本块,在基本块之间的优 化

三.划分基本块和构造程序流图 1.划分基本块 (1)找入口语句 程序的第一条语句 能由条件或无条件转向语句转移到的语 紧跟在条件转向语句后的那个语句
三. 划分基本块和构造程序流图 1. 划分基本块 (1)找入口语句 程序的第一条语句 能由条件或无条件转向语句转移到的语 句 紧跟在条件转向语句后的那个语句

(2)确定基本块 入口语句入口语句入口语句 入口语句(转向语句停语句 (3)删除未被划入基本块的语句
(2)确定基本块 入口语句 入口语句 入口语句 …… …… …… 入口语句 转向语句 停语句 (3)删除未被划入基本块的语句

→(1)i:=m-1 于(16)t7:=4*1 (2):=n (17)t8:=4 3)t1:=4*n 18)t9:=al[t8 (4)v: =at1 (19)a[t7]:=t9 (5)i:=i+1 (20t10:=4*1 6)t2:=4*i 21atl0]:=x (7)t3:=a[2 22)oto(5) (8)if t3v goto(9) (27)tl4:=al[t13] 13)if i>=j goto(23) (28)a[t12]:=t14 (14)t6:=4* (29)t15=4*n 15)X:=a[t6 (30)atl5]:=x
(1)i:=m- 1 (2)j:=n (3)t1:=4*n (4)v:=a[t1] (5)i:=i+1 (6)t2:=4*i (7)t3:=a[t2] (8)if t3v goto (9) (13)if i>=j goto (23) (14)t6:=4*i (15)x:=a[t6] (16)t7:=4*i (17)t8:=4*j (18)t9:=a[t8] (19)a[t7]:=t9 (20)t10:=4*j (21)a[t10]:=x (22)goto (5) (23)t11:=4*i (24)x:=a[t11] (25)t12:=4*i (26)t13:=4*n (27)t14:=a[t13] (28)a[t12]:=t14 (29)t15:=4*n (30)a[t15]:=x

2.构造流图 G=(n,E, no (1)基本块集即为结点集N; (2)含程序第一个语句的基本块为首结点n (3)设Bi,Bj∈N,若满足下列条件之一, 则Bi→>Bj Bj紧跟在Bi之后,且Bi的出口语句不是 无条件转向或停止语句 ●Bi的出口语句为转向语句,其转向点恰为 Bj的入口语句
2. 构造流图 G = ( N , E , n0 ) (1)基本块集即为结点集N; (2)含程序第一个语句的基本块为首结点n0 ; (3)设Bi , Bj ∈ N ,若满足下列条件之一, 则Bi →Bj •Bj 紧跟在Bi 之后,且Bi 的出口语句不是 无条件转向或停止语句 •Bi 的出口语句为转向语句,其转向点恰为 Bj 的入口语句

():=m1(2):=n BI (3)t1:=4*n(4)v:atl (5)i:=i+1(6t2:=4* B2 7)t3:=a[t2](8)if3v goto(9 (13)if i>=j goto(23) B4 B6 (14)6=4*i(15x=t61B5 (16)t7:=4*1(17)t8:=4 (23)t1:=4*i(24)x:=a[tll (18)9 (19)a[t7=t9 (25)t12=4*1(26t13:=4*n (20t10=4*(21)a[t10]=x (27)t14:=at13](28atl2]=t14 (22)goto(5) (29)t15:=4*n(30at15]=x
(1)i:=m-1 (2)j:=n (3)t1:=4*n (4)v:=a[t1] (5)i:=i+1 (6)t2:=4*i (7)t3:=a[t2] (8)if t3v goto (9) (13)if i>=j goto (23) (14)t6:=4*i (15)x:=a[t6] (16)t7:=4*i (17)t8:=4*j (18)t9:=a[t8] (19)a[t7]:=t9 (20)t10:=4*j (21)a[t10]:=x (22)goto (5) (23)t11:=4*i (24)x:=a[t11] (25)t12:=4*i (26)t13:=4*n (27)t14:=a[t13] (28)a[t12]:=t14 (29)t15:=4*n (30)a[t15]:=x B1 B2 B3 B4 B5 B6

四.局部优化 1.合并已知量 2.删除公共子表达式 3.删除死代码 (a)if的条件为定值: (b)定值后不引用或仅是A:=A±C 的递归赋值
四. 局部优化 1. 合并已知量 2. 删除公共子表达式 3. 删除死代码 (a)if 的条件为定值; (b)定值后不引用或仅是 A: = A±C 的递归赋值

之例1 (14)t6:=4*1 15)X:=a[t6 (14)t6:=4*1 (16)t7:=4*1 15)x:=al[6 (17)t8:=4*j (17)t8:=4*j (18)9:=a[t8] 优化后 (18)9:=a[t8] (19)at=9 19)at6]:=t9 (20)t10:=4*1 (21)at8]:=x (2 1)a[t10:=X (22)goto(5 (22)goto(5)
(14)t6:=4*i (15)x:=a[t6] (16)t7:=4*i (17)t8:=4*j (18)t9:=a[t8] (19)a[t7]:=t9 (20)t10:=4*j (21)a[t10]:=x (22)goto (5) (14)t6:=4*i (15)x:=a[t6] (17)t8:=4*j (18)t9:=a[t8] (19)a[t6]:=t9 (21)a[t8]:=x (22)goto (5) 优化后 例 1

例2 To:=3.14 2 =R+r A:=T1* S,,=R+r B:=A 优化后 A:=6.28*S1 2 0 R-r =R+r B:=A*S2 R B: =Ts*T 5 6
T 0 : = 3.14 T 1 : = 2 * T 0 T 2 : = R + r A : = T 1 * T 2 B : = A T3 : = 2 * T 0 T 4 : = R + r T 5 : = T 3 * T 4 T 6 : = R - r B : = T 5 * T 6 S 1 : = R + r A : = 6.28 * S 1 S 2 : = R - r B : = A * S 2 优化后 例 2
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十三讲 控制语句也可采用改写文法的方法.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十七讲 栈式分配.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十六讲 运行时存储空间管理.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十讲 含数组元素的赋值语句的翻译.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十二讲 一类控制语句的翻译.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二讲 强制式语言.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第八讲 控制结构.ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第一章 计算机应用的数学基础(汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第五章 材料数据库与专家系统 (汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第四章 计算机辅助材料的测试与分析(汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第三章 相图的计算机分析与计算(汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第二章 材料科学中的数值模拟与计算(汤爱涛).ppt
- 《photoshop》讲义(电子课件).doc
- 《计算机图形学》课程教学资源:第2章 实面积图形的生成(赵立强).ppt
- 《Matlab入门教程》教学资源:学习参考资料.doc
- 《计算机网络技术教程》第9章 各种n7网络工作站的连接.ppt
- 《计算机网络技术教程》第8章 NT网络中的TCP/IP管理.ppt
- 《计算机网络技术教程》第7章 构建Windows NT网络.ppt
- 《计算机网络技术教程》第6章 Intranet网络管理.ppt
- 《计算机网络技术教程》第5章 Internet基础.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十五讲 循环优化.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十一讲 一类说明语句的翻译.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第九讲 SIMULA 67协同程序.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第六讲 类型检查.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第七讲 抽象数据类型.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第三讲 程序单元.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十八讲 SLR分析表的构造.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十二讲 编译概述.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十讲 程序设计语言和编译程序.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十九讲 代码生成和代码优化.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十六讲 优先关系表的构造.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十七讲 LR分析法.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十三讲 自顶向下语法分析.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十四讲 预测分析程序.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十五讲 自底向上语法分析.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十一讲 自动机.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第四讲 用户定义类型.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第五讲 组合类型.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第一讲 绪论(主编:王晓斌).ppt
- 宜宾职业技术学院:《实用组网技术》课程教学资源_期末一.doc