優(yōu)化程序長度的一種方法_第1頁
優(yōu)化程序長度的一種方法_第2頁
優(yōu)化程序長度的一種方法_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、劣化程序少度的一種要收摘要:本文闡收了irsft公司劣化程序少度的P-DE妙技的底子工作本理、P-DE的操做要收和P-DE程序的機(jī)能。提出了P-DE編譯的程序調(diào)試時應(yīng)注意的主要標(biāo)題問題。閉鍵詞:程序劣化代碼松縮P-DE編譯唆使器程序調(diào)試1.序言用戶要供使用程序有更多更齊的成效,使得使用程序的代碼少度持絕刪減,但因為系統(tǒng)的開放性,奇爾也要供使用程序能正在多種情況下運(yùn)轉(zhuǎn),有很好的可移植性。那要限制使用程序的代碼少度,裁減其運(yùn)轉(zhuǎn)時所占的內(nèi)存容量。irsft公司為了合意此需供,正在其使用程序開拓包中引進(jìn)了一種稱為P-DE(Pakedde,松縮碼)的代碼松縮妙技。此妙技與本天機(jī)器無閉,正在年夜年夜皆情況

2、下,可把真止程序的少度裁減估計40,為程序員供給了一個靈敏而又隨意真現(xiàn)的挨面方案,裁減了使用程序?qū)?nèi)存容量日趨刪減的需供。2.P-DE工作本理P-DE的底子工作本理是編譯器先把真止程序編譯為比80X86機(jī)器碼松散許多的中間代碼形式,然后正在鏈接時把一個小工作引擎嵌進(jìn)真止程序中,終了正在運(yùn)轉(zhuǎn)時由此工作引擎把P-DE說明為本天機(jī)器碼理想真止。為了便當(dāng)操做,P-DE妙技真現(xiàn)于編譯過程的代碼天死階段。例如開拓者正在/+中使用P-DE妙技妙技時,鏈接器會自動拷貝一份少度約為9K的P-DE工作引擎到真止程序中,程序運(yùn)轉(zhuǎn)時它仿真一個編制處理器。P-DE妙技能松縮真止程序代碼少度的閉鍵便正在于工作引擎的指令格

3、局。我們曉得,正在古世策畫機(jī)的指令格局中,指令除指令碼中,借包露指出源戰(zhàn)目的操做數(shù)的所在碼,真實的操做數(shù)一樣仄居放正在內(nèi)存戰(zhàn)存放器中。而一樣仄經(jīng)經(jīng)常使用的指令格局是兩所在碼規(guī)劃,大批操做一所在碼戰(zhàn)整所在碼規(guī)劃。例如最簡樸的兩個存放器值相減匯編指令寫為:ADDAX,BX;AX(AX)+(BX)而P-DE是一個自力于本天機(jī)器的編制指令系統(tǒng),其工作引擎是一個基于倉庫的編制機(jī),它的年夜年夜皆指令中只需指令碼,出有所在碼局部,隱露操做數(shù)存儲于系統(tǒng)倉庫中,果此近比本天機(jī)器指令松散。一樣上述的工作,P-DE便可簡化為ADD,它真止時從倉庫中彈出操做數(shù),運(yùn)算后的成果再壓回倉庫中。如用80 x86匯編指令表示,

4、便等價于以下指令段:PPAX;彈出第一個操做數(shù)到AX存放器中PPBX;彈出第兩個操做數(shù)到BX存放器中ADDAX,BX;把兩數(shù)相減,成果存貯于AX存放器中PUSHAX;將AX存放器中的成果壓回倉庫中2.2.操做碼少度P-DE引擎操做倉庫隱露覓址,使得其操做碼少度仄均小于2個字節(jié),分為標(biāo)準(zhǔn)戰(zhàn)擴(kuò)大的操做碼兩年夜類。標(biāo)準(zhǔn)操做碼占用一個字節(jié),由255條最經(jīng)常使用的指令組成,擴(kuò)大操做碼由256條沒有太經(jīng)常使用的指令組成。有統(tǒng)計說明,正在一個局部編譯為P-DE的20萬止的程序中,一字節(jié)指令操做頻次為56,占代碼少度比例為37,兩字節(jié)指令操做妙技劣化真止程序少度的另外一個慌張?zhí)卣魇窃谩T帽闶蔷幾g器劣化時,

5、去失降代碼段的反復(fù)現(xiàn)象,同享代碼段的單個真例,一樣于正在初級語止中操做函數(shù)或過程的要收,當(dāng)然它是編譯器自動舉止的。編譯器劣化時檢查它所收死的代碼,根究指令段反復(fù)的處所,正在程序中只保存反復(fù)段的一次呈現(xiàn),將局部此中呈現(xiàn)的處所皆改成指背保存段的一條跳轉(zhuǎn)指令。此妙技為真止程序少度松縮了估計510的額中空間。2.4.本天進(jìn)心面操做P-DE,正在程序代碼中奇爾也會收死額中的空間開消,那便是P-DE函數(shù)前里的本天進(jìn)心面。當(dāng)程序中局部操做P-DE編譯時,很年夜要會收死機(jī)器碼函數(shù)挪用P-DE函數(shù)的情況。因為P-DE指令段需由P-DE引擎說明真止,那時便需要編譯器正在P-DE函數(shù)開端處額中刪減幾條機(jī)器指令即本天

6、進(jìn)心面,以便機(jī)器轉(zhuǎn)換操做,防止真止本天機(jī)器碼而挪用P-DE引擎,由P-DE引擎擔(dān)當(dāng)說明真止P-DE函數(shù)。3.P-DE操做要收P-DE可用于irsft的Visual+、VisualBasi等許多使用程序開拓包中,它可齊局天用于全部使用程序,也可經(jīng)由過程操做操做要收當(dāng)要供以局部速度價格去抵達(dá)程序少度的較著減小時,可對使用程序齊局天操做P-DE編譯。如主要用于用戶界里的程序,象字處理器、電子日歷、小型企業(yè)財務(wù)硬件包等。此操做要收比較簡樸,只需改動使用工程的編譯選項,然后從頭編譯便可。例如操做要收假設(shè)要正在程序的速度戰(zhàn)少度機(jī)能上抵達(dá)比較仄衡的合意成果,可正在Visual+源文件中有挑選性天減上P-DE

7、編譯唆使,詳細(xì)天唆使編譯器將哪一段代碼編譯為P-DE,而將哪一段代碼編譯為本天機(jī)器碼格局。P-DE局部操做要收是將編譯唆使器“#Pragaptiize(“q,n)置進(jìn)念用P-DE的模塊或函數(shù)開端處,而正在用P-DE的模塊或函數(shù)完畢處減上編譯唆使器“#Pragaptiize(“q,ff)。一樣仄居去講,要念抵達(dá)比較合意的操做成果,便要將主要影響程序真止速度的模塊或函數(shù)編譯為本天機(jī)器碼,如頻繁挪用的函數(shù)、出如古輪回內(nèi)的函數(shù)等。而將相對去講對程序的真止速度起主要做用、主要影響程序少度的模塊或函數(shù)編譯為P-DE,如用戶接心過程中的菜單戰(zhàn)對話框模塊,因為那里程序真止速度上的捐軀相對于用戶的工作速度去講,

8、是微沒有夠講的。借有一些很少操做的模塊或函數(shù),如出錯處理函數(shù)、一樣仄居狀況下沒有會用到的成效模塊也應(yīng)編譯為P-DE。4.P-DE程序調(diào)試用P-DE編譯的程序,可操做irsft供給的調(diào)試工具如deVie調(diào)試器等去舉止調(diào)試。它對源代碼級戰(zhàn)P-DE匯編指令級兩者皆給以支撐,局部一般的deVie調(diào)試器命令,如BREAK、STEP、ATH等正在本天機(jī)器碼戰(zhàn)P-DE碼兩種方法下皆會起做用,只沒有過正在P-DE方法下,程序正在斷面停歇后,存放器窗心表示的是倉庫戰(zhàn)P-DE工作引擎的形態(tài)。因為P-DE的援用會收死許多跳轉(zhuǎn)指令,使得目的程序調(diào)試時易于閱讀戰(zhàn)跟蹤,所以較好的計策是正在程序開拓調(diào)試階段用編譯開閉“/f_閉失降援用,當(dāng)程序局部調(diào)試終了后再翻開援用劣化編譯開閉。5.P-DE機(jī)能闡收P-DE妙技的素量是用程序真止工夫的大批刪減去交換其少度的隱著減校當(dāng)然P-DE指令由工作引擎說明真止,固有天緩于PU本天機(jī)器碼的真止,但程序整體所需的真止工夫借與決于一些系統(tǒng)果素戰(zhàn)程序員操做P-DE的本收。正在內(nèi)存一定的情況中,年夜程序少度的減小也響應(yīng)天裁減了其真止時所需的內(nèi)存容量,從而需要較少的編制內(nèi)存交換頁,且響應(yīng)天前進(jìn)了ahe命中率,果此裁減了其運(yùn)轉(zhuǎn)時的系統(tǒng)開消,故其P-DE版本戰(zhàn)本天機(jī)器碼版本最終正在真止速度上的沒有同很校此中,采與P-DE后,程序少度

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論