BIOS はアセンブリ言語で書かれており、マシンはバイナリしか理解できません。BIOS は、システムの起動時にメモリにロードされる最初のプログラムです。BIOS をコンパイルしてバイナリ ファイルを生成するのは何ですか?
4 に答える
理論的には、BIOS は実行可能なバイナリを生成する任意の言語で記述できますが、低レベルのハードウェアを処理する必要があるため、最も適切で最もよく使用されるのはアセンブリと C です。
PC の電源を入れると、コンパイルするものは何もありません。CPU が期待するメモリ (ROM、eprom、フラッシュ) で、既にアセンブル/コンパイル済みのバイナリが準備されています。
Bochs エミュレーターの BIOSソースも参照してください(Qemu と Virtualbox にも独自のものがあると思いますが、ソースが利用可能かどうかはわかりません)。
corebootなど、PC BIOS の置き換えを目的としたオープン ソース プロジェクトもあります。
BIOS エンジニアは BIOS を x86 アセンブリ言語で記述し、 MASMやNASMなどのプログラムで「コンパイル」します。
結果のバイナリ ファイルは、(このようなツールを使用して) フラッシュ ROM チップに書き込まれ、マザーボードにインストールされます。
PC の電源を入れると、このフラッシュ チップからコードの実行が開始され、PC のハードウェアが初期化されてから、制御がオペレーティング システムに渡されます。
上記に関するいくつかのコメント:
- 新しい UEFI BIOS は C で書かれていますが、初期ブートローダーはまだアセンブリです。
- プログラミング ツールは、通常、空のフラッシュ チップ (組み立てラインの真新しいマザーボード) の初期プログラミングにのみ必要です。システムを起動したら、通常、ソフトウェア ユーティリティを使用して BIOS チップを再フラッシュします。
- ソケット フラッシュ プログラミング ツールを常に使用する必要はありません。新しいマザーボードでは、チップが直接表面に取り付けられている場合があり、ソケットに接続されていません。その場合、このようなツールを使用してフラッシュをプログラムするためのプログラミング コネクタがマザーボードにある場合があります。
編集:コメントで指摘されているように、この回答は正しくありません。
コンパイラを誤解していると思います。
プログラムをコンパイルするときは、高級言語 (C など) を使用してアセンブリに変換します。アセンブリプログラム=バイナリプログラム。それらは同一のものです。
したがって、何も BIOS をコンパイルしません。ただ走るだけです。
マザーボードのメーカーが変換してROMに書き込んでいると思いますか?