Расширенное руководство по сборке для написания загрузчика - PullRequest
4 голосов
/ 04 марта 2012

Для проекта компьютерной архитектуры я хочу написать некоторый загрузочный код, чтобы сделать что-то простое (я подумал об игре со змеями, если это не слишком сложно).Я думал, что написание небольшого загрузчика для передачи управления программе на C не должно быть слишком сложным, но я не могу найти точную информацию.

Я ищу какое-то расширенное руководство для сборки x86, описывающее правильнозащищенный режим (я до сих пор не могу сказать, нужно ли мне переключаться на него, мой первый инстинкт - нет), как загружается компьютер, читает с клавиатуры и печатает на экран.

Я могу писать на ассемблере и передавать его gcc для написания небольших программ, мне просто нужна информация о загрузке и интерфейсе.Любая информация ценится, в том числе книги.

Ответы [ 2 ]

3 голосов
/ 04 марта 2012

Я бы порекомендовал этот веб-сайт.Вы найдете там (особенно в категории «Введение») все, что вам нужно знать.

Если вы не перейдете в защищенный режим, вы можете использовать прерывания BIOS для печати на экран, чтения с клавиатуры и т. Д. Дляпример прерывание 0x10, функция 0x0e .Если вы хотите использовать другую программу, кроме загрузчика, вам нужно будет загрузить ее в память вручную.Существуют функции BIOS для чтения с жесткого диска (или pendrive, который эмулирует жесткий диск), но вам придется самостоятельно управлять файловой системой.Возможно, в вашем случае лучшим решением будет не использовать какую-либо программу, а просто написать эту дополнительную программу по фиксированному адресу и заставить загрузчик загрузить ее из этой жестко заданной позиции.

Более того, если вы хотите выполнить скомпилированный кодс gcc в реальном режиме вам нужно использовать директиву .code16gcc.Это обеспечит возможность выполнения кода генерации газа в 16-битном реальном режиме на 32-битных машинах.

2 голосов
/ 04 марта 2012

Здесь - ссылка, с которой я столкнулся некоторое время назад, я подумал, что это интересно, и добавил ее в избранное ... возможно, это поможет.

...