gcc を使用してネイティブ x86 コード (OS なしで起動できる) を生成する方法はありますか?
2 に答える
3
はい、Linux カーネルは GCC でコンパイルされ、x86 のリング 0 で実行されます。
于 2013-09-03T21:43:05.910 に答える
1
質問の形式が正しくありません。確かに、最新の CPU を最初から初期化するために必要なすべての命令を gcc だけで発行できるわけではありません。そのためには、何らかのアセンブリを使用する必要があります。しかし、最新の CPU は実際にはこれらすべてを文書化しておらず、代わりにハードウェア メーカーがファームウェアを出荷することを期待しているため、これは一種の学術的なものです。ファームウェアの初期化後、最新の PC では、古いスタイルの 16 ビット 8086 環境 (「レガシー」BIOS) か、「EFI ブート サービス」と呼ばれるかなりクリーンな 32 または 64 ビット (特定のハードウェア プラットフォームによる) 環境のいずれかになります。
EFI モードでの操作はすべて C 関数ポインターを使用して行われ、実際に gcc を使用してこの環境用にビルドできます。EFI を使用した優れた例については、gummiboot ブート ローダーを参照してください。
于 2013-09-03T21:43:51.997 に答える