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 です。私の目標は、ジャンプして実行を開始できるフラット バイナリ ファイルを取得することです。