ブートロードステップ自体でlibcを使用できますか?

ブートロードステップ自体でlibcを使用できますか?

ブートロードステップ自体でlibcが提供するいくつかの機能を使用したいと思います。ロード段階で入手できますか?

ベストアンサー1

目的の関数バージョンを直接書く必要があるかもしれませんが、場合によってはlibcソースコードを開始点として使用することもできます。 libc自体の機能は、以下を含むUNIXユーザー空間プログラムのすべての前提で作成されました。

  • カーネル(またはより具体的にはカーネルのシステムコールインタフェース)の存在
  • フラットメモリモデル
  • 動的接続インフラストラクチャ(静的接続を除く)

そして、ブートローダ段階では、これらのどれも存在しません。代わりに(デフォルトではIntelでは)BIOS、セグメント化されたメモリモデル、メモリ保護なし、およびシステムの完全な制御機能があります。

printk()これは、カーネルスペースに適用されないとprintf()仮定するlibcではなく、カーネルコードでカスタム関数を表示するのと同じ理由です。printf()

おすすめ記事