Имейте в виду, что каждый современный ПК по-прежнему загружается в 16-битном режиме (так называемый реальный режим ).Следовательно, ваш загрузчик должен будет использовать 16-битный код.Первое, что делает загрузчик после загрузки первой стадии ядра, - это переключается в 32-битный режим (называемый защищенный режим ).
Первое, что вы должны сделатьНужно познакомиться с 16-битной архитектурой ПК и особенно с его моделью сегментации.Он понадобится вам, чтобы понять, как написать первую часть загрузчика в 16-битном режиме.Далее вам нужно понять архитектуру i386 (32-битный режим), чтобы переключиться в защищенный режим и настроить регистры сегментов, пейджинг и т. Д.
Имейте в виду, что код BIOS является 16-битнымкод можно использовать только тогда, когда процессор находится в 16-битном режиме (реальный режим) через программные прерывания.После того, как вы переключитесь в защищенный режим, вы больше не сможете его использовать (если только вы не переключитесь обратно в 16-битный режим, который является громоздким).Хорошая ссылка на прерывания BIOS - это список прерываний Ральфа Брауна: http://www.ctyme.com/rbrown.htm
С точки зрения разработки ядра хорошим руководством для начала написания ОС для x86 с нуля является Учебное пособие по разработке ядра Джеймса Моллоя: http://raw.knusbaum.com/jamesmolloy/tutorial_html/
Он использует GRUB для загрузки своего ядра, что, вероятно, лучше всего сделать, так как GRUB уже переключает процессор в защищенный режим и настраивает GDT для вас.Тогда становится намного проще загрузить простое ядро в C.
Если вы решите не использовать GRUB и писать все самостоятельно, вам придется использовать 16-битный код для загрузки вашего ядра с помощью программных прерываний изBIOS (см. Ссылку выше).Кроме того, если вы хотите, чтобы ваше ядро было в формате ELF, вам придется написать загрузчик ELF.Имейте в виду, что загрузочный сектор, загружаемый BIOS, имеет длину ровно 512 байт.Это очень мало кода (на самом деле 510 байт, так как последние 2 для подписи загрузки).Вот почему загрузочные секторы загружают загрузчик 2-й ступени, который не имеет такого размера.
В любом случае, удачи в ваших начинаниях!