Подскажите пожалуйста компилятор, генерирующий чистый 32-й код. Хочу написать загрузчик ОС. На масм32 можно? Если да, то как скомпилировать такой загрузчик ?
А ничего, что БИОС считает, что загрузчик -- 16-разрядный код, и передаёт ему управление в реальном режиме процессора?
GLebaTi конечно можно - пишите - только загрузчики они 16 битные на какое то количество процентов в связи с обратной совместимостью
1) обратная совместимость с чем? 2) C:\MASM611\BIN\MASM.EXE 1.asm C:\MASM611\BINR\LINK.EXE 1.obj /t получается ехе файл. Его содержимое я записываю в первый сектор. Всё правильно ?
GLebaTi 1) обратная совместимость с досом - в теории на любом компе должна загрузиться дос - на то что она разделы нтфс не увидит насрать 2) насколько я видел в исходниках обычно с помощью масма собирается exe который продуцирует бинарник с загрузчиком и уж его ты диск эдитом суешь в сектор, бывает что этот exe сам пишет этот бинарник в первый сетор
есть на TASMе написаная ос GlukOS. там по пунктам написано что да как. но это на случай если вы не знаете как делать.
Посмотрите на исходники загрузчика, например, ОС Singularity (http://singularity.codeplex.com/). Папка base/boot/SingLdrPC. Там 16-битная точка входа реализована на асме. Здесь же и происходит переключение в защищенный режим и подготовка 32-битного загрузчика, который написан на си и представляет собор PE EXE. Если вы можете работать в защищенном режиме и знаете структуру PE-файла, то что-то пободное не составит труда реализовать. Кстати, так же реализован загрузчик windows. Что касается linux - там применяются всякие GRUB-ы, lilo и прочие сторонние загрузчики. А вот linux первой версии грузился прямо boot-сектором по адресу 0x1000:0x0000. В силу сложности файловых систем и объемности ядра, этом способ счейчас не работает .