久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

可執(zhí)行程序

來自站長百科
尋找討論 | 貢獻(xiàn)2012年3月30日 (五) 11:28的版本 (以內(nèi)容“'''可執(zhí)行程序'''(EXE File) *一種可在操作系統(tǒng)存儲空間中浮動定位的可執(zhí)行程序。MS-DOS和MS-WINDOWS下,此類文件擴(kuò)展名為.exe ...”創(chuàng)建新頁面)
(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

可執(zhí)行程序(EXE File)

  • 一種可在操作系統(tǒng)存儲空間中浮動定位的可執(zhí)行程序。MS-DOS和MS-WINDOWS下,此類文件擴(kuò)展名為.exe
  • WINDOWS操作系統(tǒng)中的二進(jìn)制可執(zhí)行文件,可執(zhí)行文件分兩種一種是后輟名為.COM另一種就是.EXE

定義[ ]

  • .COM一般用于DOS,在WINDOWS系統(tǒng)中的執(zhí)行文件一般都是.EXE文件。在 MS-DOS 中,用以標(biāo)識可執(zhí)行文件的文件擴(kuò)展名。用戶在提示行輸入不帶 .exe 擴(kuò)展名的文件名后按 Enter 鍵就能運(yùn)行可執(zhí)行程序

文件結(jié)構(gòu)[ ]

  • EXE 文件比較復(fù)雜,每個EXE文件都有一個文件頭,結(jié)構(gòu)如下:
  1. EXE文件頭的信息
偏移量 意義
00h-01h MZ'EXE文件標(biāo)記
02h-03h 最后一頁的字節(jié)數(shù)(每頁512B)
04h-05h 文件長度(字節(jié)數(shù))除以512的商+1
06h-07h 重定位項的個數(shù)
08h-09h 文件頭除16的商
0ah-0bh 程序運(yùn)行所需最小段數(shù)
0ch-0dh ....大....
oeh-0fh 堆棧段的段值 (SS)
10h-11h ........sp
12h-13h 文件校驗和
14h-15h IP
16h-17h CS
18h-19h ............
1ah-1bh ............
1ch ............

 

  • .EXE文件包含一個文件頭和一個可重定位程序映象。文件頭包含MS-DOS用于加載程序的信息,例如程序的大小和寄存器的初始值。文件頭還指向一個重定位表,該表包含指向程序映象中可重定位段地址的指針鏈表。文件頭的形式與EXEHEADER結(jié)構(gòu)對應(yīng):
  1. EXEHEADER STRUC
    • exSignature dw 5A4Dh ;.EXE標(biāo)志
    • exExraBytes dw ;最后(部分)頁中的字節(jié)數(shù)
    • exPages dw ;文件中的全部和部分頁數(shù)
    • exRelocItems dw ;重定位表中的指針數(shù)
    • exHeaderSize dw ;以字節(jié)為單位的文件頭大小
    • exMinAlloc dw ;最小分配大小
    • exMaxAlloc dw ;最大分配大小
    • exInitSS dw ;初始SS值
    • exInitSP dw ;初始SP值
    • exChechSum dw ;補(bǔ)碼校驗值
    • exInitIP dw ;初始IP值
    • exInitCS dw ;初始CS值
    • exRelocTable dw ;重定位表的字節(jié)偏移量
    • exOverlay dw ;覆蓋號
  2. EXEHEADER ENDS程序映象
    • 包含處理器代碼和程序的初始數(shù)據(jù),緊接在文件頭之后。它的大小以字節(jié)為單位,等于EXE文件的大小減去文件頭的大小,也等于exHeaderSize的域的值乘以16。MS-DOS通過把該映象直接從文件拷貝到內(nèi)存加載.EXE程序然后調(diào)整定位表中說明的可重定位段地址。
    • 定位表是一個重定位指針數(shù)組,每個指向程序映象中的可重定位段地址。文件頭中的exRelocItems域說明了數(shù)組中指針的個數(shù),exRelocTable域說明了分配表的起始文件偏移量。每個重定位指針由兩個16位值組成:偏移量和段值。 為加載.EXE程序,MS-DOS首先讀文件頭以確定.EXE標(biāo)志并計算程序映象的大小。然后它試圖申請內(nèi)存。首先,它計算程序映象文件的大小加上PSP的大小再加上EXEHEADER結(jié)構(gòu)中的exMinAlloc域說明的內(nèi)存大小這三者之和,如果總和超過最大可用內(nèi)存塊的大小。則MS-DOS停止加載程序并返回一個出錯值。如果總和沒超過最大可用內(nèi)存塊的大小,它便計算程序映象的大小加上PSP的大小再加上EXEHEADER結(jié)構(gòu)中exMaxAlloc域說明的內(nèi)存大小之和,如果第二個總和小于最大可用內(nèi)存塊的大小,則MS-DOS 分配計算得到的內(nèi)存量。否則,它分配最大可用內(nèi)存塊。分配完內(nèi)存后,MS-DOS確定段地址,也稱為起始段地址,MS-DOS從此處加載程序映象。如果exMinAlloc域和exMaxAlloc域中的值都為零,則MS-DOS把映象盡可能地加載到內(nèi)存最高端。否則,它把映象加載到緊挨著PSP域之上。接下來,MS-DOS讀取重定位表中的項目調(diào)整所有由可重定位指針說明的段地址。對于重定位表中的每個指針,MS-DOS尋找程序映象中相應(yīng)的可重定位段地址,并把起始段地址加到它之上。一旦調(diào)整完畢,段地址便指向了內(nèi)存中被加載程序的代碼和數(shù)據(jù)段。 MS-DOS在所分配內(nèi)存的最低部分建造256字節(jié)的PSP,把AL和AH設(shè)置為加載 .COM程序時所設(shè)置的值。MS-DOS使用文件頭中的值設(shè)置SP與SS,調(diào)整SS初始值,把起始地址加到它之上。MS-DOS還把ES和DS設(shè)置為PSP的段地址.最后,MS-DOS從程序文件頭讀取CS和IP的初始值,把起始段地址加到CS之 上,把控制轉(zhuǎn)移到位于調(diào)整后地址處的程序。

相關(guān)條目[ ]

計算機(jī)程序| 程序設(shè)計| 源代碼

參考來源[ ]