資源描述:
《《中間代碼優(yōu)化》PPT課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、局部優(yōu)化循環(huán)優(yōu)化優(yōu)化目的:提高運行速度,減少存儲空間.第五章中間代碼優(yōu)化內(nèi)容:第一節(jié)優(yōu)化概述右面為for循環(huán)的中間代碼:PROD:=0;forI:=1to20doPROD:=PROD+A[I]*B[I]對該段中間代碼,可以進(jìn)行如下優(yōu)化:1>刪除多余運算見(3),(6)兩四元式的4*I,(6)可以改寫為:T4:=T1,從而減少了一次乘法.參見下頁四元式表(1)PROD:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=addr(B)-4(
2、8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)2(1)PROD:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1](6)T4:=T1(7)T5:=addr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)2>代碼外提(4)與(7)每次循環(huán)其值都不變,稱為循環(huán)不變量.可以放到循環(huán)前,
3、減少循環(huán)中的運算.參見下頁四元式表3(1)PROD:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)3>強(qiáng)度削弱由于每次循環(huán)I都增加1,因此,T1遞增4,可把(3)改為T1:=T1+4,放在(11)之后,并在循環(huán)前對I賦初值T1:=4*I.(12)改為goto(5).參見下頁四元式
4、表4(1)PROD:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20goto(5)4>變換控制條件由于I只用作循環(huán)控制,而T1=4*I,因此,可用T1替換I,I<=20等價于T1<=80,把(12)改為ifT1<=80goto(5)這樣,可以刪掉無用的I.參見下頁四元式表
5、5(1)PROD:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(3’)T1:=T1+4(12)ifT1<=80goto(5)5>合并已知量由于(3)中的I在(2)賦值后仍然為1,因此可改為:T1:=46>復(fù)寫(6)中T1復(fù)制到T4,而(6)到(8)之間沒有改變T1和T4,因此(8)可以改為:T6:=T5[T1],從而使(6)式無用.
6、參見下頁四元式表6(1)PROD:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T1](9)T7:=T3*T6(10)PROD:=PROD+T7(3’)T1:=T1+4(12)ifT1<=80goto(5)7>刪除無用賦值(2)和(6)兩四元式為無用四元式,可以刪除.最終優(yōu)化后,得到下頁四元式表7(1)PROD:=0(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)
7、T3:=T2[T1](8)T6:=T5[T1](9)T7:=T3*T6(10)PROD:=PROD+T7(3’)T1:=T1+4(12)ifT1<=80goto(5)(1)PROD:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=addr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)優(yōu)化前優(yōu)化后8第二節(jié)局部優(yōu)化局部優(yōu)化是指局限于基本
8、塊內(nèi)的優(yōu)化.一基本塊1>定義:基本塊是一順序執(zhí)行的中間代碼序列,僅包含一個入口四元式和一個出口四元式,第一條四元式為入口四元式,最后一條四元式為出口四元式.中間部分不含轉(zhuǎn)移四元式.2>基本塊的劃分給定一四元式程序,可以通過如下算法,劃分基本塊:9基本塊劃分算法:1)求四元式程序中所有基本入口四元式,包括:a)程序的第一條四元式;b)轉(zhuǎn)移語句轉(zhuǎn)移到的四元式;c