我用.exe创建了以下DOS文件:
$ 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标志吗?我应该用不同的链接器吗?我是否应该对生成的.exe进行后处理?
发布于 2020-07-10 17:59:45
为此,我无法找到配置选项,因此我最终编写了我自己的链接器,并使用它代替了WLINK。这样,.exe头就变成了24 (0x18)字节,我不需要任何重定位。
https://stackoverflow.com/questions/62488366
复制相似问题