4

BIOS はアセンブリ言語で書かれており、マシンはバイナリしか理解できません。BIOS は、システムの起動時にメモリにロードされる最初のプログラムです。BIOS をコンパイルしてバイナリ ファイルを生成するのは何ですか?

4

4 に答える 4

6

自分の BIOS を書く

理論的には、BIOS は実行可能なバイナリを生成する任意の言語で記述できますが、低レベルのハードウェアを処理する必要があるため、最も適切で最もよく使用されるのはアセンブリと C です。

PC の電源を入れると、コンパイルするものは何もありません。CPU が期待するメモリ (ROM、eprom、フラッシュ) で、既にアセンブル/コンパイル済みのバイナリが準備されています。

Bochs エミュレーターの BIOSソースも参照してください(Qemu と Virtualbox にも独自のものがあると思いますが、ソースが利用可能かどうかはわかりません)。

corebootなど、PC BIOS の置き換えを目的としたオープン ソース プロジェクトもあります。

于 2013-10-21T08:33:54.913 に答える
6

BIOS エンジニアは BIOS を x86 アセンブリ言語で記述し、 MASMNASMなどのプログラムで「コンパイル」します。

結果のバイナリ ファイルは、(このようなツールを使用して) フラッシュ ROM チップに書き込まれ、マザーボードにインストールされます。

PC の電源を入れると、このフラッシュ チップからコードの実行が開始され、PC のハードウェアが初期化されてから、制御がオペレーティング システムに渡されます。

上記に関するいくつかのコメント:

  • 新しい UEFI BIOS は C で書かれていますが、初期ブートローダーはまだアセンブリです。
  • プログラミング ツールは、通常、空のフラッシュ チップ (組み立てラインの真新しいマザーボード) の初期プログラミングにのみ必要です。システムを起動したら、通常、ソフトウェア ユーティリティを使用して BIOS チップを再フラッシュします。
  • ソケット フラッシュ プログラミング ツールを常に使用する必要はありません。新しいマザーボードでは、チップが直接表面に取り付けられている場合があり、ソケットに接続されていません。その場合、このようなツールを使用してフラッシュをプログラムするためのプログラミング コネクタがマザーボードにある場合があります。
于 2013-12-18T17:55:18.767 に答える
0

編集:コメントで指摘されているように、この回答は正しくありません。

コンパイラを誤解していると思います。

プログラムをコンパイルするときは、高級言語 (C など) を使用してアセンブリに変換します。アセンブリプログラム=バイナリプログラム。それらは同一のものです。

したがって、何も BIOS をコンパイルしません。ただ走るだけです。

于 2013-10-21T05:54:54.493 に答える
-1

マザーボードのメーカーが変換してROMに書き込んでいると思いますか?

于 2013-10-21T07:44:40.083 に答える