7

VisualC++を使用してx86マシン用の組み込みカーネルを構築したいと思います。コンパイルするCおよびアセンブリコードファイルがいくつかあり、GRUBなどのマルチブートブートローダーと互換性のある方法でそれらをすべてリンクしたいと思います。

4

1 に答える 1

6

OSDev にはVisual Studio に関する wiki エントリがあり、特に、マルチブート ベースのブートローダー (GRUB など) によってロードされるように設計された PE カーネルに関するKaushik Srenevasan のブログ エントリへのリンクにより、洞察が得られる可能性があります。

知っておくべきいくつかの大きくて大まかなこと:

  • マルチブート ヘッダーでは、AOUT kludge を使用する必要があります。
  • /BASE:0x100000 引数をリンカーに指定する必要があるため、最終的なバイナリ コードは、ブートローダーが配置する場所に基づいています。
  • カーネルのエントリ ポイント (通常は ' kmain' と呼ばれます)が必要であり、返す代わりに__declspec(noreturn)実行する必要があります。__asm { hlt }
于 2009-03-21T05:43:26.570 に答える