理論上はどの言語でもBIOSを記述できますが、現代の現実では、ほとんどのBIOSはAssembly、C、または2つの組み合わせを使用して記述されています。
BIOSは、マシンコードにコンパイルできる言語で記述されている必要があります。これは、物理的なハードウェアマシンによって理解されます。これにより、直接または中間的に解釈される言語(Perl、Python、PHP、Ruby、Java、C#、JavaScriptなど)をBIOSの記述に適したものとして排除します。(理論的には、これらの言語の1つを実装して静的マシンコードに直接コンパイルするか、何らかの方法でインタプリタをBIOSに埋め込むことができます。たとえば、Java用の放棄ソフトウェアGCJプロジェクトがあります。)
ほとんどのOEMは、American MegatrendsやPhoenix Techologiesなどの企業による独自の汎用BIOS実装を拡張してBIOSを実装しています。(おそらく、これらの会社の1つがコンピューターの最初のブート画面に表示されるのを見たことがあるでしょう。)これらの実装のソースコードは公開されていませんが、その一部は漏えいしています。これをCおよびアセンブリのソースコードに直接リンクさせたくはありませんが、インターネット上には、このソースコードが覗きたい人のために議論されている場所があります。
高性能およびゲーム市場をターゲットとするハードウェアメーカーの一部は、カスタマイズ機能、統計、および正確な実装用に設計された魅力的なユーザーインターフェイスでBIOS実装を飽和させています。これらの機能の多くは、American Megatrendsなどが生産するジェネリック製品で提供されるものを超えています。残念ながら、これらの企業はソースコードのリリースをセキュリティリスクと見なすことが多いため、これらのハイエンドの実装についてはほとんど知られていないため、これらのハイエンドの実装についてはほとんど知られていません。もちろん、そのようなBIOS実装にアクセスして逆コンパイルする方法を見つけることはできますが、そうすることは難しく、おそらく違法かもしれません。
元の質問に戻ると、ネイティブマシンコードを生成する必要があるため、ネイティブマシンコードコンパイラがサポートするプログラミング言語でBIOSを実装する必要があります。このような言語は多数ありますが、過去数十年にわたって確かにいくつかの言語が実験に使用されてきましたが、私が見つけたすべてのオープンBIOS実装は、Cおよび/またはアセンブリの組み合わせに特に依存しています。この結論を形成するために私が調べたオープンソースのBIOS実装には、OpenBIOS、tinyBIOS、coreboot、Intel BIOS、およびLibrebootが含まれます。。また、今日関係のない非常に古いBIOS実装もいくつか見てきましたが、Cおよび/またはアセンブリルールにも従いました。
ハードウェアと直接やり取りするために構築された他のソフトウェアを見るのも重要だと思います。たとえば、Linuxカーネル、OS Xカーネル、およびWindowsカーネルの大部分はCであり、特定のタスク用のアセンブリおよび一部の高レベル言語を備えていることがわかっています。我々はまた、知っているLinux上でのハードウェアのドライバをし、Windows上のハードウェアドライバは Cで、主に書かれています
BIOSに戻って、選択したプログラミング言語の経済性を考慮することも重要だと思います。BIOSは通常、ハードウェアの販売を補完するために必要なものとして書かれています。最新のBIOSシステムは、主にCおよび/またはアセンブリで記述されていることが知られています。他のツールへの移行は、一般に商品と考えられているものに多大なコストを追加し、販売に非常に悪影響を及ぼす可能性があります。Economics 101に入ることなく、数十年にわたって証明されてきた実証済みのツールから逸脱することは、OEMにとっておそらく価値がないことを保証できます。
もちろん、BIOSを作成する趣味のプロジェクトもあります。これまでのところ、これらもCやアセンブリを選択しているようです。おそらくいつか他の技術が使用されるでしょう。しかし、今日、の選択は明確に定義されています。