激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

優(yōu)化程序長(cháng)度的一種方法

時(shí)間:2024-08-09 13:26:26 計算機畢業(yè)論文 我要投稿
  • 相關(guān)推薦

優(yōu)化程序長(cháng)度的一種方法

摘要:本文分析了Microsoft公司優(yōu)化程序長(cháng)度的P-CODE 技術(shù)的基本工作原理、P-CODE的使用方法以及P-CODE程序的性能。提出了P-CODE編譯的程序調試時(shí)應注意的主要問(wèn)題。

關(guān)鍵詞:程序優(yōu)化 代碼壓縮 P-CODE 編譯指示器 程序調試

1. 前言

用戶(hù)要求應用程序有更多更全的功能,使得應用程序的代碼長(cháng)度持續增長(cháng),但由于系統的開(kāi)放性,有時(shí)也要求應用程序能在多種環(huán)境下運行,有很好的可移植性。這要限制應用程序的代碼長(cháng)度,減少其運行時(shí)所占的內存容量。

Microsoft公司為了滿(mǎn)足此需求,在其應用程序開(kāi)發(fā)包中引進(jìn)了一種稱(chēng)為P-CODE(Packed Code, 壓縮碼)的代碼壓縮技術(shù)。此技術(shù)與本地機器無(wú)關(guān),在大多數情況下,可把執行程序的長(cháng)度減少大約40%,為程序員提供了一個(gè)靈活而又容易實(shí)現的解決方案,減少了應用程序對內存容量日益增長(cháng)的需求。

2. P-CODE工作原理

P-CODE 的基本工作原理是編譯器先把執行程序編譯為比80X86機器碼緊湊得多的中間代碼形式,然后在鏈接時(shí)把一個(gè)小工作引擎嵌入執行程序中,最后在運行時(shí)由此工作引擎把P-CODE解釋為本地機器碼實(shí)際執行。為了方便使用,P-CODE技術(shù)實(shí)現于編譯過(guò)程的代碼生成階段。例如開(kāi)發(fā)者在C/C 中應用P-CODE技術(shù)時(shí),只需把它作為一個(gè)“優(yōu)化”選項選中即可

2.1. 指令格式

在應用P-CODE技術(shù)時(shí),鏈接器會(huì )自動(dòng)拷貝一份長(cháng)度約為9K的P-CODE工作引擎到執行程序中,程序運行時(shí)它仿真一個(gè)虛擬處理器。

P-CODE技術(shù)能壓縮執行程序代碼長(cháng)度的關(guān)鍵就在于工作引擎的指令格式。我們知道,在現代計算機的指令格式中,指令除指令碼外,還包括指出源和目的操作數的地址碼,真正的操作數一般放在內存和寄存器中。而一般常用的指令格式是二地址碼結構,少量使用一地址碼和零地址碼結構。例如最簡(jiǎn)單的兩個(gè)寄存器值相加匯編指令寫(xiě)為:ADD AX, BX; AX←(AX) (BX)

而P-CODE是一個(gè)獨立于本地機器的虛擬指令系統,其工作引擎是一個(gè)基于堆棧的虛擬機,它的大多數指令中只有指令碼,沒(méi)有地址碼部分,隱含操作數存儲于系統堆棧中,因而遠比本地機器指令緊湊。同樣上述的工作,P-CODE就可簡(jiǎn)化為ADDW,它執行時(shí)從堆棧中彈出操作數,運算后的結果再壓回堆棧中。如用80x86匯編指令表示,就等價(jià)于下列指令段:

POP AX ;彈出第一個(gè)操作數到AX寄存器中

POP BX ;彈出第二個(gè)操作數到BX寄存器中

ADD AX, BX ;把兩數相加,結果存貯于A(yíng)X寄存器中

PUSH AX ; 將AX寄存器中的結果壓回堆棧中

2.2. 操作碼長(cháng)度

P-CODE引擎使用堆棧隱含尋址,使得其操作碼長(cháng)度平均小于2個(gè)字節,分為標準和擴展的操作碼兩大類(lèi)。

標準操作碼占用一個(gè)字節,由255條最常用的指令組成,擴展操作碼由256條不太常用的指令組成。有統計表明,在一個(gè)全部編譯為P-CODE的20萬(wàn)行的C程序中,一字節指令使用頻率為56%,占代碼長(cháng)度比例為37%,二字節指令使用頻率為39%,占代碼長(cháng)度比例為52%,而三或四字節指令占用了余下很小的百分比。

2.3. 引用

P-CODE技術(shù)優(yōu)化執行程序長(cháng)度的另一個(gè)重要特性是引用。引用就是編譯器優(yōu)化時(shí),去掉代碼段的重復現象,共享代碼段的單個(gè)實(shí)例,類(lèi)似于在高級語(yǔ)言中使用函數或過(guò)程的方法,當然它是編譯器自動(dòng)進(jìn)行的。編譯器優(yōu)化時(shí)檢查它所產(chǎn)生的代碼,尋找指令段重復的地方,在程序中只保留重復段的一次出現,將所有其它出現的地方都改為指向保留段的一條跳轉指令。此技術(shù)為執行程序長(cháng)度壓縮了大約5-10%的額外空間。

2.4. 本地入口點(diǎn)

使用P-CODE,在程序代碼中有時(shí)也會(huì )產(chǎn)生額外的空間開(kāi)銷(xiāo),這就是P-CODE函數前面的本地入口點(diǎn)。

當程序中局部使用P-CODE編譯時(shí),很可能會(huì )發(fā)生機器碼函數調用P-CODE函數的情況。由于P-CODE指令段需由P-CODE引擎解釋執行,這時(shí)就需要編譯器在P-CODE函數開(kāi)始處額外增加幾條機器指令即本地入口點(diǎn),以便機器轉換控制,停止執行本地機器碼而調用P-CODE引擎,由P-CODE引擎繼續解釋執行P-CODE函數。

3. P-CODE使用方法

P-CODE可用于Microsoft的Visual C 、Visual Basic等許多應用

【優(yōu)化程序長(cháng)度的一種方法】相關(guān)文章:

試述植樹(shù)造林的方法與程序03-17

公司資本確定制度的問(wèn)題及優(yōu)化方法11-19

基于GPS的航標遙測系統數值優(yōu)化方法03-18

談高中數學(xué)教與學(xué)的優(yōu)化的方法05-09

循環(huán)結構的程序設計方法(一)03-07

物流成本核算方法及程序探討03-28

對于設備驅動(dòng)程序通知應用程序的幾種方法11-16

一種異步FIFO的設計方法03-19

關(guān)于初中地理教學(xué)方法優(yōu)化初探論文11-07

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频