簡體   English   中英

如何使用 OpenWatcom linker 使 DOS.exe 重定位表更小?

[英]How to make the DOS .exe relocation table smaller with OpenWatcom linker?

我用 OpenWatcom 創建了以下 DOS.exe 文件:

$ xxd prog.exe
00000000: 4d5a 8200 0100 0100 0300 4000 ffff 0500  MZ........@.....
00000010: 0204 0000 0000 0000 2000 0000 0000 0000  ........ .......
00000020: 0100 0000 0000 0000 0000 0000 0000 0000  ................
00000030: b804 008e d8e8 0900 b44c cd21 d1e2 01d0  .........L.!....
00000040: c353 52ba 0200 b409 cd21 ba0c 00b4 09cd  .SR......!......
00000050: 21ba 0f00 b409 cd21 ba08 00b8 0700 e8db  !......!........
00000060: ff89 c3ba 0a00 b809 00e8 d0ff 01d8 5a5b  ..............Z[
00000070: c300 4865 6c6c 6f21 0d0a 2400 6162 0063  ..Hello!..$.ab.c
00000080: 6400                                     d.

地區:

  • 0x0...0x1c:DOS.exe header。
  • 0x1c...0x20:4 字節的填充。
  • 0x20...0x24:4 個字節,包含 1 個重定位條目。
  • 0x24...0x30:12 字節的填充。
  • 0x30...:帶有 16 位 8086 機器碼的代碼 (_TEXT) 段。
  • ...

如何擺脫 4 字節的填充和 12 字節的填充,使代碼從偏移量 0x20 開始? 這有 WLINK 標志嗎? 我應該使用不同的 linker 嗎? 我應該對生成的.exe 進行后處理嗎?

我無法為此找到配置選項,因此我最終編寫了自己的 linker並使用它而不是 WLINK。 這樣,.exe header 就變成了 24 (0x18) 字節,我不需要任何重定位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM