




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第11章代碼優(yōu)化11.1
什么是代碼優(yōu)化11.2
局部優(yōu)化11.3
控制流程分析和循環(huán)
何謂代碼優(yōu)化:
所謂優(yōu)化,實(shí)質(zhì)上是對代碼進(jìn)行等價(jià)變換,使得變換后的代碼運(yùn)行結(jié)果與變換前代碼運(yùn)行結(jié)果相同,而運(yùn)行速度加大或占用存儲(chǔ)空間少,或兩者都有。一般,優(yōu)化工作階段可在中間代碼生成之后和(或)目標(biāo)代碼生成之后進(jìn)行,如圖所示:編譯程序的優(yōu)化工作的宗旨:生成較好性能的目標(biāo)代碼。為此,編譯程序需要對代碼(中間代碼或目標(biāo)代碼)進(jìn)行各種方式的變換,變換必須保證:等價(jià)----經(jīng)優(yōu)化工作變換后的代碼運(yùn)行結(jié)果應(yīng)與原來程序運(yùn)行結(jié)果一樣。優(yōu)化分類根據(jù)優(yōu)化所涉及的程序范圍分成:(1)局部優(yōu)化:(基本塊)(2)循環(huán)優(yōu)化:對循環(huán)中的代碼進(jìn)行優(yōu)化(3)全局優(yōu)化:大范圍的優(yōu)化按階段分:與機(jī)器無關(guān)的優(yōu)化---對中間代碼進(jìn)行依賴于機(jī)器的優(yōu)化--對目標(biāo)代碼進(jìn)行常用的優(yōu)化技術(shù)有:刪除多余運(yùn)算,循環(huán)不變代碼外提,強(qiáng)度削弱,變換循環(huán)控制條件,合并已知量,復(fù)寫傳播與刪除無用賦值。1、刪除多余運(yùn)算如果有表達(dá)式e1和e2,且它們的值始終相同,則e2的計(jì)算部分可以省略,只要用e1的值即可。例:A:=B*D+1;E:=B*D-1;G:=B*D+2;
其中三個(gè)B*D的子表達(dá)式始終一致,因此,可以優(yōu)化為:
T1:=B*D;A:=T1+1;E:=T1-1;G:=T1+2;例:A:=B*D;B:=B*D;C:=B*D;
三個(gè)式子中的B*D形式相同,但第三個(gè)式子中的B*D與前兩個(gè)式中的B*D的值不同,因此,第三個(gè)B*D不能省??蓛?yōu)化:T1:=B*D;A:=T1;B:=T1;C:=B*D;注意:只有形式相同還不行,必須值也要相同,即形式相同并不能保證值相同。例:P:=0;forI:=1to20doP:=P+A[I]*B[I];將它翻譯為四元式的形式假定數(shù)組的每個(gè)元素占4個(gè)字節(jié),add(A)是A數(shù)組的基址,W是元素的字節(jié)寬度,low為數(shù)組的下界,一維數(shù)組A[i]的地址:add(A)+(i-low)*W=add(A)+(i-1)*4=add(A)-4+4*i(1)P:=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)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)P:=0;forI:=1to20doP:=P+A[I]*B[I];代碼外提(4),(7)提到循環(huán)外面。刪除公共子表達(dá)式見兩圖中的(3)(6)變化。2、代碼外提(循環(huán)外提)例:A:=B*C1000次并且B與C是不變量則可以把B*C提到循環(huán)的外面,這就減少了999次運(yùn)算。再見上頁圖T1:=B*CA:=T11000次3、強(qiáng)度削弱把高強(qiáng)度的運(yùn)算改為低強(qiáng)度的運(yùn)算。如把乘法改為加法:a*2=2*a=a+a例fori:=1Step2untilndoBeginB:=i*k;End
其中K是不變量因此可以優(yōu)化為:
T1:=1*k;T2:=2*k;fori:=1Step2untilndobeginB:=T1;T1:=T1+T2;Endi=1時(shí),B=1*ki=3時(shí),B=3*ki=5時(shí),B=5*k即每次增加2*k(1)P:=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)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(5)(3)T1:=4*I(3‘)T1:=T1+4強(qiáng)度削弱4、變換循環(huán)條件如上例中,因?yàn)镮與T1始終保持T1:=4*I的關(guān)系,將循環(huán)條件I≤20變成T1≤80,整個(gè)程序運(yùn)行結(jié)果不變,這樣變化的好處是(11)號(hào)四元式便可以刪除。(1)P:=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)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20goto(5)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)if<=80goto(5)(3)T1:=4T1T1變換循環(huán)控制條件,合并已知量,復(fù)寫傳播5、合并已知量:例:a=10*5+6-b;tmp0=10;tmp1=5;tmp2=tmp0*tmp1;tmp3=6;tmp4=tmp2+tmp3;tmp5=tmp4-ba=tmp5;合并已知量后:tmp0=56;tmp1=tmp0-b;a=tmp1;(1)P:=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)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20goto(5)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)if<=80goto(5)(3)T1:=4T1T1合并已知量6、復(fù)寫傳播例1:tmp2=tmp1;tmp3=tmp2*tmp1;tmp4=tmp3;tmp5=tmp3*tmp2;c=tmp5+tmp4;優(yōu)化后變?yōu)椋簍mp3=tmp1*tmp1;tmp5=tmp3*tmp1;c=tmp5+tmp3;(1)P:=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)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20goto(5)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)if<=80goto(5)(3)T1:=4T1T1復(fù)寫傳播(1)P:=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)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifT1<=80goto(5)(1)P:=0(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2[T1](8)T6:=T5[T1](9)T7:=T3*T6(10)P:=P+T7(3’)T1:=T1+4(12)ifT1<=80goto(5)刪除無用賦值(1)
read(C)(2)A:=0(3)B:=1(4)L1:A:=A+B(5)ifB>=CgotoL2(6)B:=B+1(7)gotoL1(8)L2:write(A)(9)halt(1)
read(C)(2)A:=0(3)B:=1(4)L1:A:=A+B(5)ifB>=CgotoL2(6)B:=B+1(7)gotoL1(8)L2:write(A)(9)halt程序流圖的構(gòu)造以基本塊為結(jié)點(diǎn),以控制流為有向邊流圖G={N,E,n0
}N:基本塊集n0:含首語句的基本塊E:有向邊集合ABA的出口為轉(zhuǎn)移語句,轉(zhuǎn)向B的入口B緊跟A之后,且A的出口不是無條件轉(zhuǎn)移語句goto(s)或return(1)
read(C)(2)A:=0(3)B:=1(4)L1:A:=A+B(5)ifB>=CgotoL2(6)B:=B+1(7)gotoL1(8)L2:write(A)(9)halt例基本塊劃分和流圖i=m-1; j=n; v=a[n];while(1){ doi=i+1;while(a[i]<v); doj=j-1;while(a[j]>v); if(i>=j) break; x=a[i]; a[i]=a[j]; a[j]=x;}x=a[i]; a[i]=a[n]; a[n]=x;C語言數(shù)組a[i]的地址a+(i-low)*W三地址序列:(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)ift3<vgoto(5)(9)j:=j-1(10)t4:=4*j;(11)t5:=a[t4];(12)ift5>vgoto(9)(13)ifi>=jgoto(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(1-4)B2(5-8)B3(9-12)B4(13)B5(14-22)B6(23-30)基本塊的DAG表示及其應(yīng)用DAGDirectedAcyclicGraph
無環(huán)路有向圖(P253)基本塊的DAG是在結(jié)點(diǎn)上帶有標(biāo)記的DAG葉結(jié)點(diǎn):無后繼的結(jié)點(diǎn),以一標(biāo)識(shí)符(名字,常數(shù))標(biāo)記,表示該結(jié)點(diǎn)代表該變量或常數(shù)的值。如果葉子結(jié)點(diǎn)代表該變量A的地址,則addr(A)作為該結(jié)點(diǎn)的信息。內(nèi)部結(jié)點(diǎn):即有后繼的結(jié)點(diǎn),以運(yùn)算符號(hào)標(biāo)記表示該結(jié)點(diǎn)代表應(yīng)用該運(yùn)算符對其后繼結(jié)點(diǎn)所表示的值進(jìn)行運(yùn)算的結(jié)果。各個(gè)結(jié)點(diǎn):圖中各結(jié)點(diǎn)可能附加一個(gè)或多個(gè)標(biāo)識(shí)符標(biāo)記表示這些變量具有該結(jié)點(diǎn)表示的值四元式DAG結(jié)點(diǎn)(0)A:=B(:=,B,—,A)n1
AB(1):A:=opB(op,B,
—,A)
n2Aopn1B(2):A:=BopC(op,B,C,A)n3Aop
n1n2BCn1n2n1n3n1n2四元式與DAG結(jié)點(diǎn):(3)A:=B[C](=[],B[C],-,A)
(4)ifBropCgoto(s)(jrop,B,C,(s))
(5)D[C]:=B([]=,B,-,D[C])
(6)goto(s)(j,-,-,(s))
四元式序列G:T0:=3.14T0:=3.14T1:=2*T0T0:=3.14T0:=3.14T1:=2*T0T2:=R+rT0:=3.14T1:=2*T0T2:=R+rA:=T1*T2T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0T4:=R+rT0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0T4:=R+rT5:=T3*T4T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0T4:=R+rT5:=T3*T4T6:=R-rT0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0T4:=R+rT5:=T3*T4T6:=R-rB:=T5*T6G’:把G′和原基本塊G相比,可以看出:
1.G中的代碼(2)和(6)的已知量都已合并。
2.G中(5)的無用賦值已被刪除。
3.G中(3)和(7)的公共子表達(dá)式R+r只被計(jì)算一次,刪除了多余運(yùn)算。
所以G′是G的優(yōu)化結(jié)果。G:(1)T0:=3.14(2)T1:=2*T0(3)T2:=R+r(4)A:=T1*T2(5)B:=A(6)T3:=2*T0(7)T4:=R+r(8)T5:=T3*T4(9)T6:=R-r(10)B:=T5*T6G′
(1)T0∶=3.14
(2)T1∶=6.28
(3)T3∶=6.28
(4)T2∶=R+r
(5)T4∶=T2
(6)A∶=6.28*T2
(7)T5∶=A
(8)T6∶=R-r
(9)B∶=A*T6
11.3控制流分析和循環(huán)優(yōu)化
因?yàn)檠h(huán)中的代碼要反復(fù)執(zhí)行,因而為了提高目標(biāo)代碼的效率必須著重考慮循環(huán)的代碼優(yōu)化。要進(jìn)行循環(huán)優(yōu)化。首先必須找出程序中的循環(huán),為找出程序中的循環(huán),就需要對程序的控制流程進(jìn)行分析。②它們中間有且只有一個(gè)是入口結(jié)點(diǎn)。所謂入口結(jié)點(diǎn),是指序列中具有下述性質(zhì)的結(jié)點(diǎn):
從序列外某結(jié)點(diǎn),有一有向邊引到它,或者它就是程序流圖的首結(jié)點(diǎn)。在程序流圖中,我們稱具有下列性質(zhì)的結(jié)點(diǎn)序列稱為一個(gè)循環(huán):
①它們是強(qiáng)連通的。也即,其中任意兩個(gè)結(jié)點(diǎn)之間,必有一條通路,如果序列只包含一個(gè)結(jié)點(diǎn),則必有一有向邊從該結(jié)點(diǎn)引到其自身。
例如,圖中的程序流圖,根據(jù)定義:結(jié)點(diǎn)序列{6},{4,5,6,7}以及{2,3,4,5,6,7}都是循環(huán);而結(jié)點(diǎn)序列{2,4},{2,3,4},{4,6,7}以及{4,5,7}雖然都是強(qiáng)連通的,但因它們的入口結(jié)點(diǎn)不唯一,所以都不是上述意義下的循環(huán)。
必經(jīng)結(jié)點(diǎn)和必經(jīng)結(jié)點(diǎn)集的定義。在程序流圖中,對任意兩個(gè)結(jié)點(diǎn)m和n,如果從流圖的首結(jié)點(diǎn)出發(fā),到達(dá)n的任一通路都要經(jīng)過m,則稱m是n的必經(jīng)結(jié)點(diǎn),記為mDOMn。流圖中結(jié)點(diǎn)n的所有必經(jīng)結(jié)點(diǎn)的集合,稱為結(jié)點(diǎn)n的必經(jīng)結(jié)點(diǎn)集,記為D(n)。直接由定義和DOM的性質(zhì),可以求得:
D(1)={1}
D(2)={1,2}
D(3)={1,2,3}
D(4)={1,2,4}
D(5)={1,2,4,5}
D(6)={1,2,4,6}
D(7)={1,2,4,7}它具有以下性質(zhì):
1.自反性:
對流圖中任意結(jié)點(diǎn)a,有aDOMa。
2.傳遞性:
對流圖中任意結(jié)點(diǎn)a、b和c。若aDOMb,bDOMc,則有aDOMc。
3.反對稱性:
若aDOMb且bDOMa,則必有a=b。
循環(huán)的查找循環(huán)的查找算法回邊:假設(shè)a→b是流圖中的一條有向邊,如果bDOMa,則稱a→b是流圖中的一條回邊。有向邊n→d是回邊,組成的循環(huán)是由結(jié)點(diǎn)d,結(jié)點(diǎn)n以及有通路到達(dá)n而該通路不經(jīng)過d的所有結(jié)點(diǎn)組成,并且d是該循環(huán)的唯一入口結(jié)點(diǎn)。例:
回邊6674(因?yàn)?是7的必經(jīng)結(jié)點(diǎn))42(因?yàn)?是4的必經(jīng)結(jié)點(diǎn))如圖所示求回邊和循環(huán)D(1)={1}
D(2)={1,2}
D(3)={1,2,3}
D(4)={1,2,4}
D(5)={1,2,4,5}
D(6)={1,2,4,6}
D(7)={1,2,4,7}假設(shè)a→b是流圖中的一條有向邊,如果bDOMa(b是a的必經(jīng)結(jié)點(diǎn)),則稱a→b是流圖中的一條回邊。已知有向邊n→d是回邊,該循環(huán)就是由結(jié)點(diǎn)d、結(jié)點(diǎn)n以及有通路到達(dá)n而該通路不經(jīng)過d的所有結(jié)點(diǎn)組成,并且d是該循環(huán)的唯一入口結(jié)點(diǎn)。循環(huán){6}{4,5,6,7}{2,3,4,5,6,7}對圖中的流圖:
(1)求出流圖中各結(jié)點(diǎn)n的必經(jīng)結(jié)點(diǎn)集D(n);
(2)求出流圖中的回邊;
(3)求出流圖中的循環(huán)。
解答:
(1)
D(1)={1}
D(2)={1,2}
D(3)={1,2,3}
D(4)={1,2,3,4}
D(5)={1,2,3,5}
D(6)={1,2,3,6}
D(7)={1,2,7}
D(8)={1,2,7,8}
(2)回邊72(3)循環(huán){2,3,4,5,6,7}
代碼外提:減少循環(huán)中代碼數(shù)目的一個(gè)重要辦法是代碼外提。前面已經(jīng)介紹了一個(gè)代碼外提的例子.這種變換把循環(huán)不變運(yùn)算,即產(chǎn)生的結(jié)果獨(dú)立于循環(huán)執(zhí)行次數(shù)的表達(dá)式,放到循環(huán)的前面。這里,所討論的循環(huán)只存在一個(gè)入口。實(shí)行代碼外提時(shí),在循環(huán)的入口結(jié)點(diǎn)前面建立一個(gè)新結(jié)點(diǎn)(基本塊),稱之為循環(huán)的前置結(jié)點(diǎn)。循環(huán)的前置結(jié)點(diǎn)以循環(huán)的入口結(jié)點(diǎn)為其唯一后繼,原來流圖中從循環(huán)外引到循環(huán)入口結(jié)點(diǎn)的有向邊,改成引到循環(huán)前置結(jié)點(diǎn),如圖所示:
循環(huán)優(yōu)化循環(huán)優(yōu)化的三種重要技術(shù)是:代碼外提;刪除歸納變量和強(qiáng)度削弱。將循環(huán)不變運(yùn)算移到循環(huán)外例11-2:程序優(yōu)化i=0;while(i<20){x=4*i;i++;y=z*6+x;}(3)x:=4*i(4)i:=i+1(5)t1:=z*6(6)y:=t1+x(7)goto(2)(4)x:=4*i(5)i:=i+1(6)y:=t1+x(7)goto(3)(1)i:=0(1)i:=0(2)t1:=z*6(2)ifi>=20goto(8)(3)ifi>=20goto(8)是否在任何情況下,都可把循環(huán)不變運(yùn)算外提呢?下面我們看一個(gè)例子。
例考察下面的流圖。
容易看出{B2,B3,B4}是循環(huán),其中B2是循環(huán)的入口結(jié)點(diǎn),B4是出口結(jié)點(diǎn)。所謂出口結(jié)點(diǎn),是指循環(huán)中具有這樣性質(zhì)的結(jié)點(diǎn):從該結(jié)點(diǎn)有一有向邊引到循環(huán)外的某結(jié)點(diǎn)。
圖1圖中的B3中i∶=2是循環(huán)不變運(yùn)算。如果我們把i∶=2提到循環(huán)的前置結(jié)點(diǎn)B2’中,如圖所示:
結(jié)果是否相同?為什么?如果我們按照圖2的程序流圖執(zhí)行,執(zhí)行到B5時(shí),i的值總為2,則j的值也為2。事實(shí)上,按圖1的流圖,若x=30,y=25,則B3不被執(zhí)行,執(zhí)行到B5時(shí),i和j的值都為1,所以圖2的流圖改變了原來程序的運(yùn)行結(jié)果。
問題的原因在于B3不是循環(huán)出口結(jié)點(diǎn)B4的必經(jīng)結(jié)點(diǎn)。所以,當(dāng)把一個(gè)不變運(yùn)算提到循環(huán)的前置結(jié)點(diǎn)時(shí),要求該不變運(yùn)算所在的結(jié)點(diǎn)是循環(huán)所有出口結(jié)點(diǎn)的必經(jīng)結(jié)點(diǎn)。
當(dāng)把循環(huán)中的不變運(yùn)算s:A:=BopC外提時(shí)注意:(2)要求循環(huán)中其它地方不再有A的定值點(diǎn)。
(3)要求循環(huán)中A的所有引用點(diǎn)都是而且僅僅是這個(gè)定值所能達(dá)到的(1)要求s所在結(jié)點(diǎn)是循環(huán)的所有出口結(jié)點(diǎn)的必經(jīng)結(jié)點(diǎn)基本歸納變量:如果在循環(huán)中,對變量I只有唯一的形如:I:=I±C的賦值,且C為循環(huán)不變量,則稱I為循環(huán)中的基本歸納變量。歸納變量的刪除:歸納變量:如果I為循環(huán)中的一個(gè)基本歸納變量,J在循環(huán)中的定值總是可以化為I的同一線性函數(shù)也即J=C1*I±C2,其中C1、C2都是循環(huán)不變量,則稱J為的歸納變量,并稱它與I同族。一個(gè)基本歸納變量也是歸納變量。例:P250圖11.3到P251圖11.6I為基本歸納變量,T1為歸納變量,開始有兩個(gè)歸納變量I與T1,最后減為1個(gè)。歸納變量的刪除,一方面可以刪除歸納變量,同時(shí)也可以削弱計(jì)算強(qiáng)度。如果有一個(gè)循環(huán)中的多個(gè)歸納變量,歸納變量的個(gè)數(shù)往往可以減少,甚至減到1。減少歸納變量的優(yōu)化稱為歸納變量的刪除。i:=i+1t2:=4*i;t3:=a[t2];ift3<vgotoB2i:=m-1J:=nt1:=4*nV:=a[t1]B1B2j:=j-1t4:=4*j;t5:=a[t4];ift5>vgoto
B3B3ifi>=jgotoB6t11:=4*ix:=a[t11]t12:=4*it13:=4*nt14:=a[t13]a[t12]:=t14t15:=4*na[t15]:=xB6t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgotoB2B5B4對如圖所示的代碼進(jìn)行優(yōu)化:刪除公用表達(dá)式復(fù)寫傳播刪除無用的賦值刪除歸納變量強(qiáng)度削弱變換循環(huán)條件i:=i+1t2:=4*i;t3:=a[t2];ift3<vgotoB2i:=m-1J:=nt1:=4*nV:=a[t1]B1B2j:=j-1t4:=4*j;t5:=a[t4];ift5>vgoto
B3B3ifi>=jgotoB6t11:=4*ix:=a[t11]t12:=4*it13:=4*nt14:=a[t13]a[t12]:=t14t15:=4*na[t15]:=xB6t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgotoB2B5B4刪除公用表達(dá)式刪除公用表達(dá)式后i:=i+1t2:=4*i;t3:=a[t2];ift3<vgotoB2i:=m-1J:=nt1:=4*nV:=a[t1]B1B2j:=j-1
t4:=4*j;t5:=a[t4];ift5>vgoto
B3B3ifi>=jgotoB6t11:=t2x:=a[t11]t12:=t11t13:=t1t14:=a[t13]a[t12]:=t14t15:=t1a[t15]:=xB6t6:=t2x:=a[t6]t7:=t6t8:=t4t9:=a[t8]a[t7]:=t9t10:=t8a[t10]:=xgotoB2B5B4i:=i+1t2:=4*i;t3:=a[t2];ift3<vgotoB2i:=m-1J:=nt1:=4*nV:=a[t1]B1B2j:=j-1
t4:=4*j;t5:=a[t4];ift5>vgoto
B3B3ifi>=jgotoB6t11:=t2x:=a[t11]t12:=t11t13:=t1t14:=a[t13]a[t12]:=t14t15:=t1a[t15]:=xB6t6:=t2x:=a[t6]t7:=t6t8:=t4t9:=a[t8]a[t7]:=t9t10:=t8a[t10]:=xgotoB2B5B4t6:=t2x:=a[t6]=a[t2]=t3t7:=t2t8:=t4t9:=a[t8]=a[t4]=t5a[t7]=a[t2]:=t9=t5t10:=t8=t4a[t10]=a[t4]:=xgotoB2B5t11:=t2x:=a[t11]=a[t2]=t3t12:=t11=t2t13:=t1t14:=a[t13]=a[t1]a[t12]=a[t2]:=t14=a[t1]=vt15:=t1a[t15]=a[t1]:=x=t3B6B5,B6經(jīng)復(fù)寫傳播t6:=t2x:=a[t6]=a[t2]=t3t7:=t2t8:=t4t9:=a[t8]=a[t4]=t5a[t7]=a[t2]:=t9=t5t10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京高考各科試題及答案解析視頻
- 臺(tái)州國企筆試題庫及答案
- 2024年高校輔導(dǎo)員學(xué)生關(guān)系管理及發(fā)展策略試題及答案
- 三年級數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)匯編及答案
- 輔導(dǎo)員如何引導(dǎo)學(xué)生自我探索與試題及答案
- 農(nóng)業(yè)職業(yè)經(jīng)理人考試答案分析試題及答案
- 高校輔導(dǎo)員在個(gè)人成長中的重要性研究試題及答案
- 食品合規(guī)考試試題及答案
- 各高校輔導(dǎo)員職業(yè)規(guī)劃與發(fā)展問題試題及答案
- 高校輔導(dǎo)員如何提升語言表達(dá)能力試題及答案
- 部編版六年級語文下冊期中考試卷(有答案)
- 生物-華大新高考聯(lián)盟2025屆高三3月教學(xué)質(zhì)量測評試題+答案
- 演出經(jīng)紀(jì)人資格證常見試題及答案分析
- 2024年河北建投集團(tuán)招聘工作人員考試真題
- 2025年湖北省八市高三(3月)聯(lián)考物理試卷(含答案詳解)
- 貴州國企招聘2024貴州磷化(集團(tuán))有限責(zé)任公司招聘89人筆試參考題庫附帶答案詳解
- 《哪吒電影產(chǎn)品的營銷問題及完善對策研究10000字》
- 4.2依法履行義務(wù) 課件-2024-2025學(xué)年統(tǒng)編版道德與法治八年級下冊
- 《上海金茂大廈》課件
- 2025年河南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 打造具有競爭力的農(nóng)行合規(guī)文化品牌
評論
0/150
提交評論