• ベストアンサー

biosはなんの言語で作られているんですか?

OSはCやアセンブラ言語というのを知りました では、Biosはなんの言語で作られているんですか?

  • tjjjd
  • お礼率100% (106/106)

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5083/13282)
回答No.3

元々はアセンブラだったでしょうね。 ある程度機能が増えた時点で C に変わり、今の UEFI だと C++ でしょう。 C言語や C++ は完全なマシン語に変換できるので、ローレベルなソフトウェアはだいたい C か C++ で作る事になりますね。

tjjjd
質問者

お礼

ローレベルと言うのはどういう場合ですか?

その他の回答 (8)

  • yakan9
  • ベストアンサー率54% (2203/4053)
回答No.9

BIOSは、OSとなっていますが、実は、ファームウェアという単機能のソフトです。 OSという名ですがBIOSはOSの仲間には入りません。 OSという概念は、コンピュータを制御運用していくものです。 BIOSは、コンピュータの最初の起動で、ハードウェアと、OSの橋渡しの機能しか持ち合わせていません。 よってものすごい制約があります。 一般に、機械語=アッセンブラ言語しか対応付けしていないです。 アッセンブラ言語以外でソフト開発するのは、コンパイラ言語が汎用のものを使えるという前提です。 一般的なコンピュータの開発は、ハードウェア、そのCPU、CPUの命令の仕様、その命令の仕様によりアッセンブラを作ります。 その後このアッセンブラ言語に置き換えるためのコンパイラ言語を作っていくことになります。 このコンパイラ言語がCやC++や、COBOL、FORTRANとか、もっと複雑なプログラム開発言語を作っていくわけです。 この辺を理解しておけば、そこまでして採算は合うのかという疑問が出ると思います。 皆さんが回答しているのは、そうした互換性が保証されたコンピュータを開発する場合は、コンパイラ言語の開発はしないで汎用のものがあるという仮定の下で記載している訳です。 BIOSなんかは、CやC++のコンパイラーを作るコストかけるかです。 そこが課題かと思います。

tjjjd
質問者

お礼

ありがとうございます

回答No.8

BIOS/UEFIのような基本ソフトはアセンブラが基本です。Cのような高級言語はlibraryとか必要でメモリを多量に使います。限られたROMに収めるにはきつい。その昔、簡単なBIOSのソースコードが公開されてるのを見た事があります。2DDのFDメディアのブートセクターを読み込むだけのような簡単な機能。

tjjjd
質問者

お礼

アセンブラ言語は容量が少ないということなんですね

  • yakan9
  • ベストアンサー率54% (2203/4053)
回答No.7

OSをやっていくときに必ず出くわすのが、Reentrant Routineの保証という課題です。 この問題にぶつかると機械語=アセンブラ言語で書かないとまずい部分が出てくるわけです。 ここから、割り込み禁止、ここから割り込み許すといった条件とかその他同期を取る、エンキュー(enqueue)、デキュー(dequeue)とかの処理は、アセンブラ言語ですいすいとコーディングしていきたいですね。 こうした項目のコンピューター理論になっていくと、OSの中核を学んでいる気がしてきますね。

tjjjd
質問者

お礼

アセンブラ言語ですね

  • yakan9
  • ベストアンサー率54% (2203/4053)
回答No.6

回答No.5です。 一部タイプミスがありました。 > ものすごい回数くりかえる部分は 正しくは、 ものすごい回数繰り返す部分は > NOP(Non Operating)命令でパッキングしたりするためそれを防ぐ意味もあります。 正しくは、 NOP(Non Operating)命令でパディング(Padding)したりするためそれを防ぐ意味もあります。

tjjjd
質問者

お礼

補足ありがとうございます

  • yakan9
  • ベストアンサー率54% (2203/4053)
回答No.5

ものすごい回数くりかえる部分は、機械語=アセンブラ言語です。 例えば、タスク制御(Task Controler)、ディスパッチング処理(Dispatcher Processing)、オーバーレイコントローラ等、OSの基幹部分はアセンブラ言語です。 理由は、無駄な領域をなくし処理速度をできるだけ上げるため無駄な命令を入れないことです。 よく一部空いた番地に,NOP(Non Operating)命令でパッキングしたりするためそれを防ぐ意味もあります。 BIOSも一部基幹部は、上記理由により、アセンブラ言語です。 OS開発するものは、無駄な領域、無駄な命令を使わないように教育されますから。

tjjjd
質問者

お礼

アセンブラ言語なんですね

  • Gletscher
  • ベストアンサー率23% (1525/6504)
回答No.4

もしかしたら、OSにしてもBIOSにしても、開発に使用した言語の記述、つまりソースコードがそのまま入っていると考えていませんか? OSにしてもBIOSにしても、開発言語は何でも良いのです、メーカーによってBでもCでもC++でも好きなもの使います。 ソースコードはそれらの開発言語で書きますが、コンパイルをかけてマシン語に変換するので、搭載する時はマシン語になります。 OSをアセンブラーで書いていたのは相当昔の話で、たとえば現在のWindowsやLinuxのような複雑なものはアセンブラーでは無理です。UNIXはCで書かれているのは有名な話ですが、最近のOSやアプリケーションソフトなC++が一般的ではないかと思います。

tjjjd
質問者

お礼

ありがとうございます JavaはJVMが必要だったりというのはわかるんですが、Cもなにかありましたよねひつようなものが。

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.2

Cかアセンブラのどちらかとしか言えませんし それすらも、憶測でしかありません。 BIOSは、PCメーカーやM/Bメーカー あるいはそれらに外注された会社や BIOS専門会社などによって作られます。 ですから、それらが開発環境を公表しない限りは あとは、憶測するしかありません。 昔のPCは、単なる容量節減のために アセンブラで書かれていたんじゃないかと思います。 ただ、製品サイクルが速くなり、ラインナップが拡大していく過程で 開発効率を高めるために、C言語に移行していっただろうと考えることができます。 PCの性能向上も、高級言語への移行を容易にしていきました。 C言語が、登場したのは1970年代でしたが 当時の他の高級言語と比較した場合 C言語は低級言語とも言われるアセンブラとの親和性が高く よりハードウェアに近い、基礎部分を操作することに有利な高級言語と言われています。 また、C言語の開発者自身が 現在に続くUNIXというOSの開発者でもあったため OSの開発にも対応しやすい言語仕様を持っており そのため、早い時期にC言語は汎用性の高い開発言語として高く評価されました。 C++やC#といった、大幅な改良を受けた言語や 別系統の言語がいくつも登場した現在でもなお 開発言語の代表格の一つで有り続けています。 BIOSは、規模としてはけっして大きいものではありませんから C++やC#のような、より新しい言語に置き換わりにくく C言語やアセンブラが使い使われやすいと考えられます。

tjjjd
質問者

お礼

Javaで作られている可能性とかはないですかね?

  • chachaboxx
  • ベストアンサー率23% (412/1777)
回答No.1

OSの開発環境がそうであるように、BIOSについてもメーカーに依存しますので、チップセットに依るのではないでしょうか?たぶんCだと思います。

tjjjd
質問者

お礼

ありがとうございます CってOSや何にでもでてきますね 万能言語なんですかね?

関連するQ&A

  • PICプログラム C言語とアセンブラ言語

    PIC18シリーズを使用して、プログラミングをしています。コンパイラはCCS-Cです。今まではすべてC言語で書いてきたのですが、アセンブラでしか設定ができない部分があり、今までのC言語のソースに加えてアセンブラを組み合わせようと思っているのですが、C言語とアセンブラを組み合わせることは可能なのでしょうか?

  • BIOSの言語

    突然ですが、教えてください。 BIOSの言語が英語なのですが、これを日本語にすることはできるのでしょうか? ご回答のほうよろしくお願い致します。 機種:AOD150-Bw73 メーカー:acer OS:Win XP

  • アセンブリ言語について

    アセンブリ言語の勉強をしたいと思っています。 例えば、CやJava,などはコンパイラを使ってコンパイルをしますよねぇ。同じようにアセンブり言語にもアセンブラというものがあるのでしょうか? フリーでそのようなアセンブラ(コンパイラ?)があるのなら教えてくれないでしょうか?できれば、AT互換のアセンブリ言語の仕様書が書かれているサイトでもあれば教えてください。(できれば、日本語で・・・) それと アセンブラ言語を高水準言語と比較した場合の利点について教えてください。 色々とすいません。どうかよろしくお願いします。

  • コンピュータ言語とプログラミング言語の違い

    履歴書のようなものに自分のスキルを登録する際に、 「使用したことのあるプログラミング言語を記入してください」とあったので、 C、C++、アセンブラ、Perl、HTML、 としました。 その後、「使うことの出来るコンピュータ言語を記入してください」とありました。 この、「プログラミング言語」と「コンピュータ言語」という定義には何か違いがあるのでしょうか?また、C、C++、アセンブラは間違いないと思うのですが、残りの2つはプログラミング言語に含めてもいいのでしょうか? よろしくお願いいたします。

  • アセンブラ言語がわかりません。

    初心者です。まとを得ていない質問でしたらすみません。 C言語は理解できる程度なのですが、アセンブラのコードを書く事ができません。 今アセンブラ言語を学び始めた所ですが、「jr」「jarl」「jmp」などの分岐命令の指定の方法がわかりません。 C言語でいうとどういうコードを書いた時に、このような命令を出力できますでしょうか。 本を読んでも、この上記の命令の意味は書いてあるのですが、実際出力が出来なかったもので。 またアセンブラ言語を学ぶためにいい方法などありましたらお教えく頂けないでしょうか。 よろしくお願いします。

  • アセンブリ言語について。

    CPUを直接操作するうなプログラムは高水準言語では作れないので低水準言語が必要になります。 CPUをスリープ状態にするHLT命令はアセンブラにはありますがC言語などの高水準言語には無い機能ですから、アセンブラを使ってプログラムを書かないと実現できません。というのは、合っていますでしょうか?教えていただけないでしょうか?すみません。

  • アセンブラ→C言語

    アセンブラを学んでから C言語を学ぶとわかりやすい(理解しやすい) と聴きました。 どうやって勉強すれば良いですか? やっぱり本屋さんでアセンブラについての本を買って 勉強した方が良いですか? 今まで全くコンピュ-タ-についての言語を 習ったことがありません。

  • アセンブラ言語についてです。

    こんにちは。 現在大学3回生で就職活動をしております。 ESに得意科目の欄があり、大学の講義で習ったアセンブラ言語と書こうと思います。 アセンブラ言語は、将来どのような役に立つのでしょうか?? アセンブラ言語を学んでCやJAVAのプログラミングに生かせるのでしょうか?? 知識としては、基本情報技術者のCASLIIの問題が解ける程度です。 よろしく願いします。

  • C言語との違い

    大学で情報コースでC言語とアセンブラとは実験や授業で扱ったのですが知り合いからサーバーを立ち上げるためにPHPを使うんで手伝ってほしいといわれました。 PHPについて色々調べたのですがCとアセンブラしか知らなくても扱えるものなのでしょうか?? 相手は普通の釣具屋さんなんです。 詳しくC言語との違いを知りたいです。 本などを読んで分かるものでしょうか??

    • ベストアンサー
    • PHP
  • プログラム言語について

    C・COBOL・アセンブラ言語・Javaの4つをまったく知らない状態で、どれか1つを勉強するとしたら、どれば一番簡単ですか?