- ベストアンサー
biosはなんの言語で作られているんですか?
OSはCやアセンブラ言語というのを知りました では、Biosはなんの言語で作られているんですか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
元々はアセンブラだったでしょうね。 ある程度機能が増えた時点で C に変わり、今の UEFI だと C++ でしょう。 C言語や C++ は完全なマシン語に変換できるので、ローレベルなソフトウェアはだいたい C か C++ で作る事になりますね。
その他の回答 (8)
- yakan9
- ベストアンサー率54% (2247/4136)
BIOSは、OSとなっていますが、実は、ファームウェアという単機能のソフトです。 OSという名ですがBIOSはOSの仲間には入りません。 OSという概念は、コンピュータを制御運用していくものです。 BIOSは、コンピュータの最初の起動で、ハードウェアと、OSの橋渡しの機能しか持ち合わせていません。 よってものすごい制約があります。 一般に、機械語=アッセンブラ言語しか対応付けしていないです。 アッセンブラ言語以外でソフト開発するのは、コンパイラ言語が汎用のものを使えるという前提です。 一般的なコンピュータの開発は、ハードウェア、そのCPU、CPUの命令の仕様、その命令の仕様によりアッセンブラを作ります。 その後このアッセンブラ言語に置き換えるためのコンパイラ言語を作っていくことになります。 このコンパイラ言語がCやC++や、COBOL、FORTRANとか、もっと複雑なプログラム開発言語を作っていくわけです。 この辺を理解しておけば、そこまでして採算は合うのかという疑問が出ると思います。 皆さんが回答しているのは、そうした互換性が保証されたコンピュータを開発する場合は、コンパイラ言語の開発はしないで汎用のものがあるという仮定の下で記載している訳です。 BIOSなんかは、CやC++のコンパイラーを作るコストかけるかです。 そこが課題かと思います。
お礼
ありがとうございます
- kongojid1740
- ベストアンサー率23% (34/142)
BIOS/UEFIのような基本ソフトはアセンブラが基本です。Cのような高級言語はlibraryとか必要でメモリを多量に使います。限られたROMに収めるにはきつい。その昔、簡単なBIOSのソースコードが公開されてるのを見た事があります。2DDのFDメディアのブートセクターを読み込むだけのような簡単な機能。
お礼
アセンブラ言語は容量が少ないということなんですね
- yakan9
- ベストアンサー率54% (2247/4136)
OSをやっていくときに必ず出くわすのが、Reentrant Routineの保証という課題です。 この問題にぶつかると機械語=アセンブラ言語で書かないとまずい部分が出てくるわけです。 ここから、割り込み禁止、ここから割り込み許すといった条件とかその他同期を取る、エンキュー(enqueue)、デキュー(dequeue)とかの処理は、アセンブラ言語ですいすいとコーディングしていきたいですね。 こうした項目のコンピューター理論になっていくと、OSの中核を学んでいる気がしてきますね。
お礼
アセンブラ言語ですね
- yakan9
- ベストアンサー率54% (2247/4136)
回答No.5です。 一部タイプミスがありました。 > ものすごい回数くりかえる部分は 正しくは、 ものすごい回数繰り返す部分は > NOP(Non Operating)命令でパッキングしたりするためそれを防ぐ意味もあります。 正しくは、 NOP(Non Operating)命令でパディング(Padding)したりするためそれを防ぐ意味もあります。
お礼
補足ありがとうございます
- yakan9
- ベストアンサー率54% (2247/4136)
ものすごい回数くりかえる部分は、機械語=アセンブラ言語です。 例えば、タスク制御(Task Controler)、ディスパッチング処理(Dispatcher Processing)、オーバーレイコントローラ等、OSの基幹部分はアセンブラ言語です。 理由は、無駄な領域をなくし処理速度をできるだけ上げるため無駄な命令を入れないことです。 よく一部空いた番地に,NOP(Non Operating)命令でパッキングしたりするためそれを防ぐ意味もあります。 BIOSも一部基幹部は、上記理由により、アセンブラ言語です。 OS開発するものは、無駄な領域、無駄な命令を使わないように教育されますから。
お礼
アセンブラ言語なんですね
- Gletscher
- ベストアンサー率23% (1525/6504)
もしかしたら、OSにしてもBIOSにしても、開発に使用した言語の記述、つまりソースコードがそのまま入っていると考えていませんか? OSにしてもBIOSにしても、開発言語は何でも良いのです、メーカーによってBでもCでもC++でも好きなもの使います。 ソースコードはそれらの開発言語で書きますが、コンパイルをかけてマシン語に変換するので、搭載する時はマシン語になります。 OSをアセンブラーで書いていたのは相当昔の話で、たとえば現在のWindowsやLinuxのような複雑なものはアセンブラーでは無理です。UNIXはCで書かれているのは有名な話ですが、最近のOSやアプリケーションソフトなC++が一般的ではないかと思います。
お礼
ありがとうございます JavaはJVMが必要だったりというのはわかるんですが、Cもなにかありましたよねひつようなものが。
- vaidurya
- ベストアンサー率45% (2714/5983)
Cかアセンブラのどちらかとしか言えませんし それすらも、憶測でしかありません。 BIOSは、PCメーカーやM/Bメーカー あるいはそれらに外注された会社や BIOS専門会社などによって作られます。 ですから、それらが開発環境を公表しない限りは あとは、憶測するしかありません。 昔のPCは、単なる容量節減のために アセンブラで書かれていたんじゃないかと思います。 ただ、製品サイクルが速くなり、ラインナップが拡大していく過程で 開発効率を高めるために、C言語に移行していっただろうと考えることができます。 PCの性能向上も、高級言語への移行を容易にしていきました。 C言語が、登場したのは1970年代でしたが 当時の他の高級言語と比較した場合 C言語は低級言語とも言われるアセンブラとの親和性が高く よりハードウェアに近い、基礎部分を操作することに有利な高級言語と言われています。 また、C言語の開発者自身が 現在に続くUNIXというOSの開発者でもあったため OSの開発にも対応しやすい言語仕様を持っており そのため、早い時期にC言語は汎用性の高い開発言語として高く評価されました。 C++やC#といった、大幅な改良を受けた言語や 別系統の言語がいくつも登場した現在でもなお 開発言語の代表格の一つで有り続けています。 BIOSは、規模としてはけっして大きいものではありませんから C++やC#のような、より新しい言語に置き換わりにくく C言語やアセンブラが使い使われやすいと考えられます。
お礼
Javaで作られている可能性とかはないですかね?
- chachaboxx
- ベストアンサー率23% (412/1777)
OSの開発環境がそうであるように、BIOSについてもメーカーに依存しますので、チップセットに依るのではないでしょうか?たぶんCだと思います。
お礼
ありがとうございます CってOSや何にでもでてきますね 万能言語なんですかね?
お礼
ローレベルと言うのはどういう場合ですか?