




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE2
inta[25][25],…a[i][j]=…a[i][j]=a[i][j]= 一.優(yōu)化所涉及的源程序的范圍—基本塊內(nèi)優(yōu)化;——5—目標(biāo)代碼生成前的優(yōu)化;5BeforeBeforeAfterX+2*Beforee+fe+
Afterx=e+f 3.LoopinvariantcodeBeforeb=for(i=0;i<3;i++)d[i]=2*b+1;
Afterb=z=2*b+for(i=0;i<3;i++)=zBeforeBefore AfterJump-to-jumpBeforeifelsegotoJ1;J1:gotoJ2;
AfterifgotoDeadcodeBeforecharif(c>300)a=1;a=2
Aftera=FunctionBefore AfterintCheck(int{return}voidmain({if(check(y))
voidmain({if(y>10}}Looptransformation-simple Csourcecodeinttable[100];step=1;for(i=0;i<100;i+=step)table[i]=0;beforei=L1:t1=i*4;=if(i<100)goto
afteri=t1=i*L1:table[t1]=0t1=t1+4;if(i<100)gotoLooptransformation-dynamicCsourcestep=for(i=0;i<MAX;i+=step)=beforeoptimizationstep=step_table[1];i=0;L1:t1=i*table[t1]=0;i=i+step;if(i<MAX)goto
afteri=step=t1=i*t2=step*2;L1:table[t1]=0;t1=t1+t2;i=i+step;if(i<MAX)gotoLooptransformation-composedCsourceinttable[0]=table[11]=table[0]=table[11]=table[22]=table[99]=beforei=0;j=t1=i*10;L1:t2=t1+t3=t2* /*addresstable[t3]=i;i=i+1;t1=t1+j=j+if(j<10)goto
i=0;j=t1=1*t2=t1+j;t3=t2*Repeat10table[t3]=i;i=i+1;t3=t3+PAGE20根據(jù)基本塊的結(jié)構(gòu)特點,它的入口語句⑵由條件轉(zhuǎn)移語句或無條件轉(zhuǎn)移語句轉(zhuǎn)⑶緊跟在條件轉(zhuǎn)移或無條件轉(zhuǎn)移后面的所屬的基本塊。即:⑴由該入口語句直到下一個入口語句(不包含下一個入口語句)之間的所有語句構(gòu)成一⑵由該入口語句到下一轉(zhuǎn)移語句(含該轉(zhuǎn)移語句)之間的所有語句構(gòu)成一個基本塊;或到程序中的停止或暫停語句(包含該停止或暫 234567PAGE24 Step2:對求出的每一個入口語句構(gòu)造相應(yīng)Step3:凡不屬于某一基本塊中的語句,皆G=(N,E,n0N:是流圖的所有的結(jié)點組成的集合。流圖設(shè)有結(jié)點i到結(jié)點k(或說從結(jié)點i到結(jié)點k由有向邊Ei相連)可表示為:iik①基本塊k在流圖中的位置緊跟在基本塊i之后,且基本塊i的出口語句不是無條igotos)if...goto(s)(s)k 234567 ①read②read③R=x/ ④ifR=0gotox=⑤x=x=⑥y=⑦goto⑧write ⑨DAG(DirectedAcyclicGraph)設(shè)G是由若干結(jié)點構(gòu)成的有向圖,從結(jié)點ni到結(jié)點nj的有向邊用ni→nj表示。①若存在有向邊序列ni1→ni2→…→nim,則稱結(jié)ni1與結(jié)點nim之間存在一條路徑,或稱ni1與nim是連通的。路徑上有向邊的數(shù)目為路徑的長度;②如果存在一條路徑,其長度≥2,且該路徑起每個基本塊都可以用一個DAG表示,稱為基本塊①葉結(jié)點用標(biāo)識符或常量作為其惟一的標(biāo)記,②內(nèi)部結(jié)點用運算符標(biāo)記,同時也表示計算的③各結(jié)點上可以附加一個或多個標(biāo)識符,附加2828例8.3–
+ba,d 01 23 41
常見四元式與DAG結(jié)點對應(yīng)關(guān)系P226 A=BopC (op,B,C,A) ifBropCgotos(jrop,B,C,(s)Aop op,B, A B, AB31 31 輸入:一個基本塊iiDAG:[1].[2].[3]. [4]. 3,則令:NODE(B)=n,即葉子結(jié)2,轉(zhuǎn)[2]1,如果NODE(C)無定義,則建立PAGE34NODE(B)是標(biāo)記為常數(shù)的葉子結(jié)點,則轉(zhuǎn)②如果NODE(B)和NODE(C)都是標(biāo)記為常數(shù)的葉opB(即常量合并),設(shè)得到的新常數(shù)為P。如果NODE(B)是處理當(dāng)前四元式時新建立的結(jié)點,則刪除它。如果NODE(P)無定義,則建立一標(biāo)記為P的葉子結(jié)點,令NODE(P)=n,轉(zhuǎn)[4]。④執(zhí)行BopC(即常量合并),設(shè)得到的新常數(shù)為P。如果NODE(B)或NODE(C)是處理當(dāng)前四元式時新建立的結(jié)點,則刪除它。如果NODE(P義,則建立一標(biāo)記為P的葉子結(jié)點,令NODE(P)=n①檢查DAG中是否有一結(jié)點,其唯一后繼為NODE(BOP如果沒有,則建立該結(jié)點,并令NODE(OP)=n;否則,為了敘述方便,也認(rèn)為NODE(OP)=n。轉(zhuǎn)DAG中是否有一結(jié)點,其左后繼為,右后繼為NODE(C)且標(biāo)記為OP(即查找公共子表達(dá)式)。如果沒有,則建立該結(jié)點,并令NODE(OP)=n;否則,為了敘述方便,也認(rèn)為如果NODE(A)無定義,則把A附加在否則,先把A從NODE(A)結(jié)點的附加標(biāo)識符集中刪除(如果NODE(A)是葉子結(jié)點,則其標(biāo)記A不刪除),把A附加在結(jié)點n的右邊,并令NODE(A)=n。 2*R+rT1*T22*R+rT3*T4
P228例PAGE39⑴T0=⑵T1=2*⑶T2=⑷A=T1* n5+ ⑴T0=⑵T1=2*⑷⑸A=T1⑷⑸A=T1*B=⑹T3=2*⑺T4=⑻T5=T3*⑼T6=R-⑽B=T5*
6 86578657–234 PAGE44
定義8.3n0出發(fā),到達(dá)nj的任何一條通路都必經(jīng)過ni,則稱ni是nj的必經(jīng)結(jié)點,記作niDOMnj。 自反性:aDOMa傳遞性:如果aDOMb,bDOMc,則有:aDOMc。反對稱性:若有aDOMb,bDOMa,則有:a=b。 D(1)=D(2)=D(3)={1,2,D(4)={1,2,D(5)={1,2,4,D(6)={1,2,4,D(7)={1,2,4,定義8.5(回邊設(shè)a→b是流圖G中一條有向邊,如果bDOMa,則稱a→b是流圖G中的一條回邊。記作<a,b>。例8.5流圖中存在有向邊6→6,7→4和4→2。 D(6)={1,2,4,6則6D(7)={1,2,4,7則4D(4)={1,2,4則24849若<n,d>是一回邊,則由結(jié)點d、結(jié)點nnd的所有<6,6>loop={6<7,4>loop={4,5,6,7<4,2>loop={2,3,4,5,6,7PAGE51.實施
.循環(huán)優(yōu)化
采集一.為了進(jìn)行循環(huán)優(yōu)化和全局優(yōu)化,編譯程PAGE54點 x=a*b+c; readx;x獲得值的中間代碼的位置d,稱為x的定值點。例如di:xdj:read
x的中間代碼的位置d,稱為變x的引用點。dji dki設(shè)有流圖G,變量AGdpd通路到達(dá)p且該通路上沒有對變量A進(jìn)行 <A>—對變量A的引用A—對變量AAp:
變量Ad的定值到達(dá)點
= = = PAGE61定義8.6(ud鏈P引用了變量A的值,則把GPA為A在引用點P的引用-定值鏈(即ud鏈)。 即某變量A在點d的引用的ud鏈,是AdAd注銷掉 在程序中對某變量A在點P進(jìn)行定值,如果存在一條從P開始的通路,其中引用了APA在點P是活躍的,否則稱變量A在點P是死亡的。定義8.7(du鏈假設(shè)在程序中某點P對一個變量A定A的引用點的全體A在定值點P的定值-引用鏈(即du 63A63d-du={d1,d2 ={dj+1,={di,dj+1,
tttt={dj,dk ={dk+2,dj,dkPAGE67 out[B]=gen[B]∪(in[B]–kill[B] 后(每個基本塊Bi的有關(guān)信息利in[B 前(每個基本塊Bi的有關(guān)信息利PAGE71IN(BiBi入口點OUT(BiBi出口點后,所有變GEN(Bi):BiBi出口之后所達(dá)Bi結(jié)束點的定值)。
IN(B)= P∈P(B) 12345674512763725①如果某定值點d在IN(B)中,而且被d定值的變量在B中未被重新定值,則d也在OUT(B)中;②如果定值點dGEN(B)中,則它一定在而對于IN(B),則可知,某定值點d到達(dá)基本 for(i=1;i<=N;i++{IN[Bi]=Φ; /*IN[Bi]和OUT[Bi]的迭代初值}change=―真 change:相繼2次迭代所得的IN[Bi]之值不等則為―真,whilechange 需要繼續(xù)迭代;若相等,則迭代過程結(jié)束,值為― change=―for(i=1;i<=N;i++ NEWIN=∪out[P]; /*P∈Pred(Bi)。求B的前驅(qū)塊的OUT的并*/if(NEWIN!=IN[Bi] /*NEWIN記錄每次迭代后IN[Bi]的新值 =―真”; OUT[Bi]=GEN[Bi]∪(IN[Bi]-}}}}}若在基本塊B中,某變量A的引用點u之前有A的定值點dd點A的定值能到達(dá)u,則Auudnrl5btl;若在基本塊B中,某變量A的引用點u之前無A的定值點,則包含在IN[B]中的全部A的定值點均可到達(dá)點uIN[B]中的這些A的定值點組成Auud鏈。x+yPP算x+y,并且在最后一個x+y到P之間未對x或y定值,則表達(dá)式x+y在點P可用。xyB2中沒有對變量iB2中沒有對變量iB2中對變量i定值B2中對變量i定值Out[B]=in[B]–kill[B] in(B)=∩ 設(shè)in(B0)= 7979INL(B)=OUTL(B)–DEFL(B)∪USEL(B) OUTL(B)=∪ OUTL(B)B的出口點PAGE81
∴ 代碼外提就是將循環(huán)中的不變運算提到這里所指的不變運算,是指與循環(huán)執(zhí)行次數(shù)無關(guān)的運算,或不受循環(huán)控制變量影響84例如,設(shè)循環(huán)L84 A= I=1;L1:B=J+C=B+A=C+ifI=100gotoL2I=I+1gotoL2:PAGE87<B,B>loop={B,B B=J+1JJ B2查找循環(huán)中的不變運算;(X1)實施代碼外提;(X2)依次查看L如果其中的每個運算對象為常數(shù)或定值點在L之外(根據(jù)ud鏈判斷),將該語句標(biāo)記為依次查看未被標(biāo)記為“不變運算”的語句,如果其運算對象為常數(shù)或定值點在L外,或只有一個到達(dá)-定值點且該點上的語句已標(biāo)記為“不變運算”,則將被查看的 SABopC或A=opB或AB,①(iii)L中所有AS②A在離開L后不再是活躍的,且條件①的在L的任何出口結(jié)點的后繼結(jié)點(指不屬于LL的前置結(jié)點中。但若S中的運算對象(B或C)是在L中定值的,那么,只有當(dāng)這些定值語句都提到前置結(jié)點中后,才可把S也外提。
ifu<vgotoB3
L={B2,B3,B4v=v-ifv<=20goto
B5,A **LA不止一次定值情況下,i阻擋將A=3外B5時,A
A= ifu<vgotoA=ifv<=20gotoj= ***L中所有A的引用點只有語句S中A的定值
ifu<vgoto B4時,A的
k=AA=2;v=v-ifv<=20goto= I=I=T=K*IK1T=T±
98II=I±C式的賦值,其中CI如果I是循環(huán)中一個基本歸納變量,變量J在循環(huán)中的定值總可化為I的同一線性函數(shù)的形式:J=C1*I±C2,其中:C1、C2是循環(huán)不變量,則稱J是歸納變量,稱J與I同族。 PAGE102 (W1:查找歸納變量step2:尋找L中只有一個定值的K(歸納K=J*C;K=C*J;K=J/C;K=J±C;J是基本歸納變量,KJ族中;K、J同族}J是歸納變量,J∈K族,K、J、I同族 LJ的惟一定值和對K的定值間沒有對I的定值;**找出一族歸納變量,可以變換計算歸納變量的指令(*→+) (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 親子教育居間勞務(wù)協(xié)議
- 2025年度北京市社區(qū)醫(yī)療服務(wù)合作協(xié)議范本
- 化妝品生產(chǎn)質(zhì)量管理體系手冊
- 垃圾處理廠工程居間協(xié)議
- 季度銷售成績回顧與未來展望報告
- 煙葉項目可行性研究報告
- 循環(huán)經(jīng)濟(jì)產(chǎn)業(yè)園項目可行性報告
- 電子雜志制作與推廣手冊
- 智能家居行業(yè)運營指南
- 個人學(xué)習(xí)成長計劃表之階段性目標(biāo)
- 1、現(xiàn)代生物技術(shù)的概念、涵蓋的領(lǐng)域
- 30題紀(jì)檢監(jiān)察位崗位常見面試問題含HR問題考察點及參考回答
- 重癥肺炎護(hù)理查房課件文件
- 小兒發(fā)育遲緩護(hù)理查房課件
- 施耐德變頻器說明書大全
- 部編版小學(xué)語文三年級語文下冊第三單元集體備課教材分析解讀
- 新建機(jī)動車檢測站備案申請書
- 光伏電站事故處理規(guī)程
- 中國建筑三鐵六律行為安全準(zhǔn)則培訓(xùn)ppt
- 新人教版(新插圖)五年級下冊數(shù)學(xué) 第4單元 分?jǐn)?shù)的意義和性質(zhì)單元測試卷(含答案)
- 大型商場消防系統(tǒng)維保實施方案
評論
0/150
提交評論