第三节代码优化 优化的定义 优化是一种等价的,有效的程序变换 等价—不改变程序运行结果 有效时空效率要高
第三节 代码优化 一. 优化的定义 优化是一种等价的,有效的程序变换 等价——不改变程序运行结果 有效——时空效率要高
不同阶段的优化 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 t3<v goto(5) (23)t1:=4*i (9):=-1 24)x:=alt11] (10)t4:=4 (25)t12=4*i (11)t5:=at4] (26)t13:=4*r (12)if t5>v 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 t3<v goto (5) (9)j:=j - 1 (10)t4:=4*j (11)t5:=a[t4] (12)if t5>v 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