




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
/第十章代碼優(yōu)化某些編譯程序在中間代碼或目標(biāo)代碼生成之后要對生成的代碼進(jìn)行優(yōu)化。所謂優(yōu)化,實質(zhì)上是對代碼進(jìn)行等價變換,使得變換后的代碼運行結(jié)果與變換前代碼運行結(jié)果相同,而運行速度加大或占用存儲空間少,或兩者都有。優(yōu)化可在編譯的不同階段進(jìn)行,對同一階段,涉及的程序范圍也不同,在同一范圍內(nèi),可進(jìn)行多種優(yōu)化。一般,優(yōu)化工作階段可在中間代碼生成之后和(或)目標(biāo)代碼生成之后進(jìn)行。中間代碼的優(yōu)化是對中間代碼進(jìn)行等價變換。目標(biāo)代碼的優(yōu)化是在目標(biāo)代碼生成之后進(jìn)行的,因為生成的目標(biāo)代碼對應(yīng)于具體的計算機(jī),因此,這一類優(yōu)化在很大程度上依賴于具體的機(jī)器,我們不做詳細(xì)討論。另外依據(jù)優(yōu)化所涉及的程序范圍,又可分為局部優(yōu)化、循環(huán)優(yōu)化和全局優(yōu)化三個不同的級別。局部優(yōu)化指的是在只有一個入口、一個出口的基本程序塊上進(jìn)行的優(yōu)化。循環(huán)優(yōu)化對循環(huán)中的代碼進(jìn)行的優(yōu)化。全局優(yōu)化是在整個程序范圍內(nèi)進(jìn)行的優(yōu)化。本章重點:局部優(yōu)化基本塊的DAG表示第一節(jié)優(yōu)化技術(shù)簡介為了說明問題,我們來看下面這個例子,源程序是:P:=0ForI:=1to20doP:=P+A[I]*B[I];經(jīng)過編譯得到的中間代碼如圖10-1-1所示,這個程序段由B1和B2兩個部分組成,B2是一個循環(huán),假定機(jī)器按字節(jié)編址。那么,對于這個中間代碼段,可進(jìn)行如下這些優(yōu)化。1、刪除多余運算(刪除公共子表達(dá)式)優(yōu)化的目的在于使目標(biāo)代碼執(zhí)行速度較快。圖10-1-1中間代碼(3)和(6)中都有4*I的運算,而從(3)到(6)沒有對I賦值,顯然,兩次計算機(jī)的值是相等的。所以,(6)的運算是多余的。我們可以把(6)變換成:T4:=T1。這種優(yōu)化稱為刪除多余運算或稱為刪除公共子表達(dá)式。 B B1B2圖10-1-1中間代碼段(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)2、代碼外提減少循環(huán)中代碼總數(shù)的一個重要辦法是代碼外提。這種變換把循環(huán)不變運算,即其結(jié)果獨立于循環(huán)執(zhí)行次數(shù)的表達(dá)式,提到循環(huán)的前面。使之只在循環(huán)外計算一次,上例中,我們可以把(4)和(7)提到循環(huán)外。經(jīng)過刪除多余運算和代碼外提后,代碼變成圖10-1-2。 B1B2圖10-1-3強(qiáng)度削弱(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) B1B2圖10-1-2刪除公共子表達(dá)式和代碼外提(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)3、強(qiáng)度削弱強(qiáng)度削弱的思想是把強(qiáng)度大的運算換算成強(qiáng)度小的運算。例如把乘法運算換成加法運算等等。在圖10-1-2的循環(huán)中,每循環(huán)一次,I的值增1,T1的值與I保持線性關(guān)系,每次總是增加4。因此,我們可以把循環(huán)中計算T1值的乘法運算變換成在循環(huán)前進(jìn)行一次乘法運算,而在循環(huán)中將其變換成加法運算。變換后如圖10-1-3所示。4、變換循環(huán)控制條件圖10-1-3的代碼中,I和T1始終保持T1=4*I的線性關(guān)系,這樣可以把(12)的循環(huán)控制條件I≤20變換成T1≤80,這樣整個程序的運行結(jié)果不變。這種變換稱為變換循環(huán)控制條件。經(jīng)過這一變換后,循環(huán)中I的值在循環(huán)后不會被引用,四元式(11)可以從循環(huán)中刪除,這就是我們的目的所在。5、合并已知量與復(fù)寫傳播圖10-1-3中,四元式(3)計算4*I時,I必為1。所以(3)中的4*I的兩個運算對象都是編碼時的已知量,可在編譯時計算出它的值,即(3)可變?yōu)門1=4這種變換稱為合并已知量。圖10-1-3中,(6)把T1的值復(fù)寫到T4中,四元式(8)要引用T4的值,而(6)到(8)之間未改變T4和T1的值,則(8)改為T6:=T5[T1],之后運算結(jié)果保持不變。這種變換稱為復(fù)寫傳播。圖10-1-3經(jīng)過變換循環(huán)控制條件,合并已知量和復(fù)寫傳播等變換后,變?yōu)閳D10-1-4。 B1B2圖10-1-4(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[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3′)T1:=T1+4(12)ifI≤80goto(5) B1B2圖10-1-5刪除無用賦值(1)P:=0(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2[T1](8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(3′)T1:=T1+4(12)ifI≤80goto(5)6、刪除無用賦值在圖11.5中,(6)對T4賦值,但T4未被引用;另外,(2)和(11)對I賦6、刪除無用賦值在圖10-1-4中,(6)對T4賦值,但T4未被引用;另外,(2)和(11)對I賦值,但只有(11)引用I。所以,只要程序中其它地方不需要引用T4和I,則(6),(2)和(11)對程序的運行結(jié)果無任何作用。我們稱之為無用賦值,無用賦值可以從程序中刪除,如圖10-1-5所示(設(shè)(6)(2)(11)為無用賦值)。比較圖10-1-1和圖10-1-5可看出,經(jīng)過優(yōu)化后的代碼的執(zhí)行效率提高了很多。當(dāng)然,實現(xiàn)這些優(yōu)化的代價也是很大的。第二節(jié)局部優(yōu)化我們所說的局部優(yōu)化是指基本塊內(nèi)的優(yōu)化,所謂基本塊,是指程序中一順序執(zhí)行語句序列,其中只有一個入口語句和一個出口語句。執(zhí)行時只能從其入口語句進(jìn)入,從其出口語句退出。對于一個給定的程序,我們可以把它劃分為一系列的基本塊。在各基本塊的范圍內(nèi)分別進(jìn)行優(yōu)化。一、基本塊的劃分在介紹基本塊的構(gòu)造之前,我們先定義基本塊的入口語句,所謂入口語句,嚴(yán)格地說來就是:1、程序的第一語句;或者,2、條件轉(zhuǎn)移語句或無條件轉(zhuǎn)移語句的轉(zhuǎn)移目標(biāo)語句;或者,3、緊跟在條件轉(zhuǎn)移語句后面的語句。有了入口語句的概念之后,我們就可以給出劃分中間代碼(四元式程序)為基本塊的算法,其步驟如下:1、求出四元式程序中各個基本塊的入口語句。2、對每一入口語句,構(gòu)造其所屬的基本塊。它是由該入口語句到下一入口語句(不包括下一入口語句),或到一轉(zhuǎn)移語句(包括該轉(zhuǎn)移語句),或到一停語句(包括該停語句)之間的語句序列組成的。3、凡未被納入某一基本塊的語句、都是程序中控制流程無法到達(dá)的語句,因而也是不會被執(zhí)行到的語句,我們可以把它們刪除。我們?nèi)砸陨弦还?jié)所述的例子來說明,對于圖10-1-1中的代碼段,由規(guī)則1,語句(1)是入口語句,由規(guī)則2,語句(3)是入口語句。由規(guī)則3,跟隨語句(12)的語句是入口語句,這樣,語句(1)和(2)構(gòu)成一個基本塊,語句(3)—(12)構(gòu)成一個基本塊,也即圖10-1-1中的B1和B2。二、基本塊的變換很多變換可作用于基本塊而不改變它計算的表達(dá)式集合,這樣的變換對改進(jìn)代碼的質(zhì)量是很有用的。有兩類重要的局部等價變換可用于基本塊,它們是保結(jié)構(gòu)的變換和代數(shù)變換?;緣K的主要保結(jié)構(gòu)變換是1、刪除公共子表達(dá)式2、刪除無用代碼3、重新命名臨時變量4、交換語句次序?qū)τ?和2,我們在第一節(jié)已經(jīng)討論過,在此簡單討論一下3和4。重新命名臨時變量:假如有語句t:=b+c,其中t是臨時變量。如果把這個語句改為u:=b+c,其中u是新的臨時變量,并且把這個t的所有引用改成u,那么基本塊的運算結(jié)果不變。交換語句次序:如果基本塊有兩個相鄰的語句:t1:=b+ct2:=x+y當(dāng)且僅當(dāng)x和y都不是t1,b和c都不是t2時我們可以交換這兩個語句的次序。有許多代數(shù)變換可以把基本塊計算的表達(dá)式集合變換成代數(shù)等價的集合。其中有用的變換是那些可以簡化表達(dá)式或用較快運算代替較慢運算的變換。例如:x:=x+0或x:=x*1這樣的語句可以從基本塊中刪除而不改變它計算的表達(dá)式集合,又如x:=y**2的指數(shù)算符通常要用函數(shù)調(diào)用來實現(xiàn),使用代數(shù)變換,這個語句可由快速、等價的語句x:=y*y來代替。第三節(jié)基本塊的DAG表示n1n1n2n3n4n1n2n3n5n4n6n7n8n9圖10-3-1有向圖圖10-3-2DAG先將我們所需使用的DAG作一說明。在一個有向圖中,我們稱任一有向邊ni→nj(或表示為有序?qū)Γ╪i,nj))中的結(jié)點ni為結(jié)點nj的前驅(qū)(父結(jié)),結(jié)點nj為結(jié)點ni的后繼(子結(jié))。又稱任一有向邊序列n1→n2,n2→n3,…,nk—1→nk為從結(jié)點n1到結(jié)點nk的一條通路。如果其中n1=nk,則稱通路為環(huán)路。該結(jié)點序列也記為(n1,n2,…,nk)。例如,圖10-3-1中有向圖的通路(n2,n2)和(n3,n4,n3)就是環(huán)路。如果有向圖中任一通路都不是環(huán)路,則稱該有向圖為無環(huán)路有向圖,簡稱DAG。圖10-3-2的有向圖就是一個DAG。在DAG中,如果(n1,n2,…,nk)是其中一條通路,則稱結(jié)點n1為結(jié)點nk的祖先,結(jié)點nk為結(jié)點n1的后代。我們這一節(jié)中要用到的有向圖,是一種其結(jié)點帶有下述標(biāo)記或附加信息的DAG:1、圖的葉結(jié)點,即無后繼的結(jié)點,以一標(biāo)識符(變量名)或常數(shù)作為標(biāo)記,表示該結(jié)點代表該變量或常數(shù)的值。如果葉結(jié)點用來代表某變量A的位置,則用addr(A)作為該結(jié)點的標(biāo)記。通常把葉結(jié)點上作為標(biāo)記的標(biāo)識符加上下標(biāo)0,以表示它是該變量的初值。2、圖的內(nèi)部結(jié)點,即有后繼的結(jié)點以一運算符作為標(biāo)記,表示該結(jié)點代表應(yīng)用該運算符對其后繼結(jié)點所代表的值進(jìn)行運算的結(jié)果。3、圖中各個結(jié)點上可能附加一個或多個標(biāo)識符,表示這些變量具有該結(jié)點所代表的值。上述這種DAG可用來描述計算過程,又稱描述計算過程的DAG。在以下的討論中,我們簡稱DAG。下面討論基本塊的DAG表示與構(gòu)造。一個基本塊,可用一個DAG來表示。下面(圖10-3-3)列出各種四元式及相對應(yīng)的DAG的結(jié)點形式。圖中ni為結(jié)點編號,結(jié)點下面的符號(運算符、標(biāo)識符或常數(shù))是各結(jié)點的標(biāo)記,各結(jié)點右邊的標(biāo)識符是結(jié)點的附加標(biāo)識符。四元式 DAG結(jié)點opBAnopBAn1An2Bn1(1)A:=opB(op,B,—,A)CCn2opAn3Bn1(2)A:=BopC(op,B,C,A)=[]=[]Cn2An3Bn1(3)A:=B[C](=[],B[C],—,A)
rop
ropCn2(S)n3Bn1(4)ifBropCgoto(s)(jrop,B,C,(S))DDB[]=Cn3(S)90()n4n2n1N1(S)90()(5)D[C]:=B([]=,B,—,D[C])(6)goto(s)(j,—,—,(S))圖10-3-3四元式與DAG結(jié)點接著給出一種構(gòu)造基本的DAG算法。假設(shè)DAG各結(jié)點信息將用某種適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)來存放。并設(shè)有一個標(biāo)識符(包括常數(shù))與結(jié)點的對應(yīng)表。NODE(A)是描述這種對應(yīng)關(guān)系的一個函數(shù),它的值或者是一個結(jié)點的編號n,或者無定義。前一個情況代表DAG中存在一個結(jié)點n,A是其上的標(biāo)記或附加標(biāo)識符。我們把圖10-3-3中各形式的四元式按其對應(yīng)結(jié)點的后繼個數(shù)分為四類。其中,四元式(0)稱為0型,(1)稱為1型;(2)和(3)稱為2型;(5)稱為3型。對于3型四元式,由于對數(shù)組元素賦值的情形需特殊考慮,因此暫不討論,對四元式(6)也不涉及,下面是僅含0,1,2型四元式的基本塊的DAG構(gòu)造算法。首先,DAG為空。對基本塊的每一四元式,依次執(zhí)行:1、如果NODE(B)無定義,則構(gòu)造一標(biāo)記為B的葉結(jié)點并定義NODE(B)為這個結(jié)點;如果當(dāng)前四元式是0型,則記NODE(B)的值為n,轉(zhuǎn)4。如果當(dāng)前四元式是1型,則轉(zhuǎn)2.(1)。如果當(dāng)前四元式是2型,則:(1)如果NODE(C)無定義,則構(gòu)造一標(biāo)記為C的葉結(jié)點并定義NODE(C)為這個結(jié)點,(2)轉(zhuǎn)2.(2)。2、(1)如果NODE(B)的標(biāo)記為常數(shù)的葉結(jié)點,則轉(zhuǎn)2(3),否則轉(zhuǎn)3.(1)。(2)如果NODE(B)和NODE(C)都是標(biāo)記為常數(shù)的葉結(jié)點,則轉(zhuǎn)2.(4),否則轉(zhuǎn)3.(2)。(3)執(zhí)行opB(即合并已知量),令得到的新常數(shù)為P。如果NODE(B)是處理當(dāng)前四元式時新構(gòu)造出來的結(jié)點,則刪除它。如果NODE(P)無定義,則構(gòu)造一用P做標(biāo)記的葉結(jié)點n。置NODE(P)=n,轉(zhuǎn)4.。3、(1)檢查DAG中是否已有一結(jié)點,其唯一后繼為NODE(B),且標(biāo)記為op(即找公共子表達(dá)式)。如果沒有,則構(gòu)造該結(jié)點,否則就把已有的結(jié)點作為它的結(jié)點并設(shè)該結(jié)點為n,轉(zhuǎn)4.。(2)檢查DAG中是否已有一結(jié)點,其左后繼為NODE(B),右后繼為NODE(C),且標(biāo)記為op(即找公共子表達(dá)式)。如果沒有,則構(gòu)造該結(jié)點n,否則就把已有的結(jié)點作為它的結(jié)點并設(shè)該結(jié)點為n。轉(zhuǎn)4.。4、如果NODE(A)無定義,則把A附加在結(jié)點n上并令NODE(A)=n;否則先把A從NODE(A)結(jié)點上的附加標(biāo)識符集中刪除(注意,如果NODE(A)是葉結(jié)點,則其標(biāo)記A不刪除),把A附加到新結(jié)點n上并令NODE(A)=n。轉(zhuǎn)處理下一四元式。例1試構(gòu)造以下基本塊G的DAG。(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*T6r=+R=+3.14=+3.14=+6.28=+r=+R=+3.14=+3.14=+6.28=+3.14=+6.28=+T1=++=+T2n5n3n4T0=+n1n2T1=+T0=+n1n2T0=+n1(a)(b)(c)TT2r=+3.14=+6.28=+T1=++=+T0=+n1n2T1=+n43.14=+6.28=+T1=+T0=+n1n2R=+r=+n3n4*=+T2A,Bn6n5+=+T2An5*=+n6R=+n3(d)(e)*=+r*=+r=+3.14=+6.28=+T1=++=+T0=+n1n2T1=+n4(f)(g)3.14=+6.28=+T1,T3=+T0=+n1n2R=+r=+n4*=+T2,T4A,Bn6n5+=+T2A,Bn5n6T1,T3=+R=+n3n3T0T1,T3+-T6T2,T4*n8n5n7*rn4Rn33.14n16.28n2A,B,T5n6(j)A,B,T5T0T1,T3+T6*n6rRn36.28n2-3.14n1n4T2,T4n7n5(i)A,B,T5T1,T3+*n6rRn36.28n23.14n1n4T2,T4n5(h)T0T0圖10-3-4由四元式構(gòu)造的DAG第四節(jié)代碼生成概述代碼生成是把經(jīng)過語法分析或優(yōu)化后的中間代碼作為輸入,將其轉(zhuǎn)換成特定機(jī)器的機(jī)器語言或匯編語言作為輸出,這樣的轉(zhuǎn)換程序稱為代碼生成器,因此,代碼生成器的構(gòu)造與輸入的中間代碼形式和輸出的目標(biāo)代碼的機(jī)器結(jié)構(gòu)密切相關(guān)。特別是高級語言和計算機(jī)的多種多樣性為代碼生成的理論研究和實現(xiàn)技術(shù)帶來很大的復(fù)雜性。由于一個高級程序設(shè)計語言的目標(biāo)代碼需反復(fù)使用,因而,代碼生成器的設(shè)計要著重考慮目標(biāo)代碼的質(zhì)量問題。衡量目標(biāo)代碼的質(zhì)量主要從占用空間和執(zhí)行效率兩個方面綜合考慮。到底產(chǎn)生什么樣的目標(biāo)代碼取決于具體的機(jī)器結(jié)構(gòu)、指令格式、字長及寄存器的個數(shù)和種類,并與指令的語義和所用操作系統(tǒng)、存儲管理等都密切相關(guān)。目標(biāo)代碼的執(zhí)行效率在很大程度上依賴于寄存器的使用。第五節(jié)習(xí)題一、單項選擇題1、優(yōu)化可生成 的目標(biāo)代碼。 a.運行時間較短 b.占用存儲空間較小c.運行時間短但占用內(nèi)存空間大 d.運行時間短且占用存儲空間小2、下列 優(yōu)化方法不是針對循優(yōu)化進(jìn)行的。 a.強(qiáng)度削弱 b.刪除歸納變量 c.刪除多余運算 d.代碼外提3、基本塊內(nèi)的優(yōu)化為 。 a.代碼外提,刪除歸納變量 b.刪除多余運算,刪除無用賦值c.強(qiáng)度削弱,代碼外提 d.循環(huán)展開,循環(huán)合并4、關(guān)于必經(jīng)結(jié)點的二元關(guān)系,下列敘述中不正確的是 。 a.滿足自反性 b.滿足傳遞性 c.滿足反對稱性 d.滿足對稱性5、對一個基本塊來說, 是正確的。 a.只有一個入口語句和一個出口語句 b.有一個入口語句和多個出口語句c.有多個入口語句和一個出口語句 d.有多個入口語句和多個出口語句6、在程序流圖中,我們稱具有下述性質(zhì) 的結(jié)點序列為一個循環(huán)。 a.它們是非連通的且只有一個入口結(jié)點 b.它們是強(qiáng)連通的但有多個入口結(jié)點c.它們是非連通的但有多個入口結(jié)點 d.它們是強(qiáng)連通的且只有一個入口結(jié)點7、 不可能是目標(biāo)代碼。 a.匯編指令代碼 b.可重定位指令代碼 c.絕對指令代碼 d.中間代碼[解答]1、優(yōu)化的目的是使目
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年03月成都市“蓉漂人才薈”成都高新區(qū)公開考核公開招聘10名事業(yè)單位工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025年03月吉林省總工會《今天》雜志社筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 高級信息系統(tǒng)項目管理師綜合知識押題密卷2
- 阜新高等??茖W(xué)?!杜照{(diào)工程施工》2023-2024學(xué)年第二學(xué)期期末試卷
- 暨南大學(xué)《體育測量評價》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國科學(xué)院大學(xué)《規(guī)范寫作B》2023-2024學(xué)年第一學(xué)期期末試卷
- 江陽城建職業(yè)學(xué)院《公共關(guān)系與溝通技巧》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海民航職業(yè)技術(shù)學(xué)院《ROS機(jī)器人基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 交流調(diào)頻調(diào)壓牽引裝置項目風(fēng)險分析和評估報告
- 林州建筑職業(yè)技術(shù)學(xué)院《建筑設(shè)計2》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國技能大賽-第45屆世界技能大賽全國選拔賽“水處理技術(shù)”項目技術(shù)工作文件
- 學(xué)校運動會目的
- 講解員禮儀培訓(xùn)
- 臺風(fēng)知識簡介(共29張課件)
- 《哮喘患者自我管理影響因素的HAPA模型驗證分析及實證研究》
- 音樂鑒賞與實踐 第一單元第四課音樂的力量(下)
- 生產(chǎn)設(shè)備操作指南
- 中職職教高考文言文課文及翻譯
- 公司事故隱患內(nèi)部報告獎勵機(jī)制
- 年九年級語文上冊 第三單元 11《醉翁亭記》教案 新人教版五四制
- 家禽委托屠宰合同協(xié)議書
評論
0/150
提交評論