“.com”文件和“.bin”文件有什么区别?

问题描述 投票:0回答:1

我正在研究基于Assembly x86编程语言的内核。我只是想知道.bin文件和.com文件之间有什么区别。我可以从.com文件启动吗?在哪里以及如何使用.com文件?

x86 operating-system dos bootloader file-format
1个回答
6
投票

如果你在谈论DOS可执行文件,那么.COM文件的结构非常少。它的第一个字节对应于IP = 0x100。当DOS启动它时,它设置CS = DS = ES = SS =加载文件的段。 IP为0x100,SP通常接近0xFFFE(除非DOS内存不足)。偏移0和0x100之间的空间有一些控制信息,Program Segment Prefix,包括带参数的命令行。

.BIN文件没有普遍认可的结构。它可以是任何东西。 DOS无法识别它。

BIOS(除非我们谈论UEFI)不支持任何可执行格式。它只是从磁盘加载第一个扇区(到物理地址0x7C00)并将控制传递给它(将CS:IP设置为0:0x7C00或0x7C0:0)。该扇区必须能够以某种方式从磁盘加载(使用BIOS int 0x13)更多扇区。

IOW,BIOS一般无法加载整个.COM程序并成功启动它。即使是这么简单的任务,也需要第一阶段的引导加载程序。但这是可以完成的。参见例如我的BootProg。它可以加载DOS .COMs和.EXE。

© www.soinside.com 2019 - 2024. All rights reserved.