В чем разница между файлом ".com" и файлом ".bin"? - PullRequest
0 голосов
/ 16 марта 2019

Я работаю над ядром, основанным на языке программирования Assembly x86. Мне просто интересно, в чем разница между файлами .bin и .com. Могу ли я загрузиться из файла .com? Где и как использовать .com файлы?

1 Ответ

6 голосов
/ 16 марта 2019

Если вы говорите об исполняемых файлах DOS, то файл .COM имеет очень небольшую структуру.Его первый байт соответствует IP = 0x100.Когда DOS запускает его, он устанавливает CS = DS = ES = SS = сегмент, в который загружается файл.IP равен 0x100, SP обычно близок к 0xFFFE (если только у DOS недостаточно памяти).Пространство между смещением 0 и 0x100 содержит некоторую управляющую информацию, Префикс сегмента программы , который включает в себя командную строку с аргументами.

Нет общепринятой структуры файла .BIN.Это может быть что угодно.DOS не распознает его.

BIOS (если мы не говорим об UEFI) не поддерживает какой-либо исполняемый формат.Он просто загружает самый первый сектор с диска (по физическому адресу 0x7C00) и передает ему управление (устанавливая CS: IP либо 0: 0x7C00, либо 0x7C0: 0).Сектор должен иметь возможность загружать (используя BIOS int 0x13) как можно больше секторов с диска.

IOW, BIOS обычно не может загрузить целую программу .COM и успешно запустить ее.Даже для такой простой задачи потребуется загрузчик первого этапа.Но это может быть сделано.См. Например, мой BootProg .Может загружать DOS .COM и .EXEs.

...