如何使用 OpenWatcom 链接器使 DOS .exe 重定位 table 更小?

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.

地区:

如何去除 4 个字节的填充和 12 个字节的填充,以便代码从偏移量 0x20 开始?这个有 WLINK 标志吗?我应该使用不同的链接器吗?我应该 post-process 生成的 .exe 吗?

我无法为此找到配置选项,所以我最终编写了 my own linker 并使用它代替了 WLINK。这样 .exe header 就变成了 24 (0x18) 字节,我不需要任何重定位。