<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 優化程序長度的一種方法

    時間:2024-08-09 13:26:26 計算機畢業論文 我要投稿
    • 相關推薦

    優化程序長度的一種方法

    摘要:本文分析了Microsoft公司優化程序長度的P-CODE 技術的基本工作原理、P-CODE的使用方法以及P-CODE程序的性能。提出了P-CODE編譯的程序調試時應注意的主要問題。

    關鍵詞:程序優化 代碼壓縮 P-CODE 編譯指示器 程序調試

    1. 前言

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

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

    2. P-CODE工作原理

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

    2.1. 指令格式

    在應用P-CODE技術時,鏈接器會自動拷貝一份長度約為9K的P-CODE工作引擎到執行程序中,程序運行時它仿真一個虛擬處理器。

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

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

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

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

    ADD AX, BX ;把兩數相加,結果存貯于AX寄存器中

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

    2.2. 操作碼長度

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

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

    2.3. 引用

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

    2.4. 本地入口點

    使用P-CODE,在程序代碼中有時也會產生額外的空間開銷,這就是P-CODE函數前面的本地入口點。

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

    3. P-CODE使用方法

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

    【優化程序長度的一種方法】相關文章:

    試述植樹造林的方法與程序03-17

    公司資本確定制度的問題及優化方法11-19

    基于GPS的航標遙測系統數值優化方法03-18

    談高中數學教與學的優化的方法05-09

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

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

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

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

    關于初中地理教學方法優化初探論文11-07

    主站蜘蛛池模板: 国产日韩一区在线精品欧美玲| 乱色精品无码一区二区国产盗 | 合区精品中文字幕| 国产99精品久久| 亚洲精品国产首次亮相| 国产精品一区二区av不卡| 国产成人精品精品欧美| 亚洲精品tv久久久久久久久| 国产视频精品免费视频| 久久国产免费观看精品| 精品欧洲AV无码一区二区男男| 久久久久久国产精品无码下载| 亚洲成人精品久久| www.久久精品| 久久精品aⅴ无码中文字字幕重口| 日韩经典精品无码一区| 国产精品香蕉在线观看| 亚洲国产精品国自产拍电影 | 日韩精品久久久肉伦网站| 久久精品亚洲乱码伦伦中文| 91精品婷婷国产综合久久| 国产精品1024香蕉在线观看| 日本内射精品一区二区视频| 在线精品自拍无码| 亚洲精品麻豆av| 亚洲国产精品无码久久九九| 久久久久国产日韩精品网站| 精品一区二区三区色花堂| 国产精品国产AV片国产| 北条麻妃国产九九九精品视频| 精品国产免费一区二区三区香蕉| 国产AV无码专区亚洲精品| 国产精品禁18久久久夂久| 国产亚洲精品精华液| 精品久久久久久成人AV| 蜜臀久久99精品久久久久久小说| 亚洲精品成人片在线观看精品字幕 | 国产一区二区精品久久| 国产精品成人A区在线观看| 久久久久亚洲精品无码蜜桃| 亚洲国产精品嫩草影院在线观看 |