16-битный код C для ядра реального режима - PullRequest
4 голосов
/ 17 июля 2011

Я не знаю, как скомпилировать ядро ​​C для 16-битного реального режима.Я попробовал множество компиляторов без удачи.Мой загрузчик просто загружает сырые сектора с дискеты (мое ядро ​​живет сразу после первого сектора на диске) по адресу физической памяти 1000h: 0000h, а затем переходит к нему.Как я могу скомпилировать ядро ​​C для работы в 16-битном реальном режиме?

мое базовое ядро:

void OSmain()
{
    unsigned char *videoram = (unsigned char *) 0xb8000;
    videoram[0] = 65;                                     /* character 'A' */
    videoram[1] = 0x07;                                   /* forground, background color. */

    while( 0 )
    {

    }
}

компиляторы, которые я пробовал - это GCC, tinyCC и DMC.Моя цель - получить плоский двоичный файл, к которому я могу перейти, чтобы начать выполнение.

1 Ответ

3 голосов
/ 17 июля 2011

Во-первых, я рекомендую вам ознакомиться с OSDev Wiki , в котором есть ресурсы для разработки вашей собственной ОС и компонентов.

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

...