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

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

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

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

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

    1. 前言

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

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

    2. P-CODE工作原理

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

    2.1. 指令格式

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

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

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

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

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

    ADD AX, BX ;把兩數(shù)相加,結(jié)果存貯于AX寄存器中

    PUSH AX ; 將AX寄存器中的結(jié)果壓回堆棧中

    2.2. 操作碼長度

    P-CODE引擎使用堆棧隱含尋址,使得其操作碼長度平均小于2個字節(jié),分為標(biāo)準(zhǔn)和擴(kuò)展的操作碼兩大類。

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

    2.3. 引用

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

    2.4. 本地入口點

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

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

    3. P-CODE使用方法

    P-CODE可用于Microsoft的Visual C 、Visual Basic等許多應(yīng)用

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

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

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

    基于GPS的航標(biāo)遙測系統(tǒng)數(shù)值優(yōu)化方法03-18

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

    循環(huán)結(jié)構(gòu)的程序設(shè)計方法(一)03-07

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

    對于設(shè)備驅(qū)動程序通知應(yīng)用程序的幾種方法11-16

    一種異步FIFO的設(shè)計方法03-19

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

    主站蜘蛛池模板: 国产亚洲精品AA片在线观看不加载| 精品视频一区二区三区四区五区 | 免费精品99久久国产综合精品| 四虎影视永久在线精品| 四虎精品8848ys一区二区| 欧美精品v国产精品v日韩精品| 久久www免费人成精品香蕉| 91精品成人免费国产片| 97久久久精品综合88久久| 日韩国产精品无码一区二区三区 | 精品蜜臀久久久久99网站| 亚洲精品国产电影| 久久久久久青草大香综合精品| 国产99视频精品专区| 四虎永久在线精品884aa下载| 国产精品186在线观看在线播放| 亚洲精品狼友在线播放| 无码人妻精品一区二区三区99不卡 | 久久精品国产久精国产思思 | 国内精品99亚洲免费高清| 99久久精品九九亚洲精品| 久久精品国产99国产精偷| 国产精品成人观看视频免费| 国产成人精品免费久久久久| 久久亚洲精精品中文字幕| 亚洲AV乱码久久精品蜜桃| 亚洲综合国产精品第一页 | 91久久精品91久久性色| 久久精品aⅴ无码中文字字幕不卡| 亚洲AV永久无码精品水牛影视| 日韩视频中文字幕精品偷拍| 日韩精品一区二区三区视频| 日韩精品无码永久免费网站| 亚洲А∨精品天堂在线| 中国精品18videosex性中国 | 四虎国产精品永久地址49| 2021年精品国产福利在线| 国产成人精品曰本亚洲79ren| 99久久精品国产一区二区三区 | 中文字幕精品一区影音先锋| 亚洲精品你懂的|