• ベストアンサー

OSを書いている言語と、昔の言語。

こんにちは。質問があります。 1今のウィンドウズOSは、調べたら、Cや、C+等で書かれている、とあるのですか、これでいいでしょうか? 2.昔MSXというパソコンで学習していた、ニーモニックやベーシックは、現在のOSを作っている言語と同じ階層でしょうか? つまり・・ 理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? つまりそういう意味で、同質のものでしょうか? 変な質問で済みません。

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

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

>1今のウィンドウズOSは、調べたら、Cや、C+等で書かれている、とあるのですか、これでいいでしょうか? 概ねあっているかと。 ただ、ウィンドウズOSというのが、どっからどこまでなのかの問題もあるので、一概に正しいとは言えないかもしれません。 ハード制御はアセンブラで書いていると思われます。 http://q.hatena.ne.jp/1121131416 http://okwave.jp/qa/q83429.html >理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? ニーモニックとはアセンブリ言語のことでしょうかね。 アセンブリ言語は機械語と1対1の最下層の言語ですから作れます。 Basicではメモリが直接扱えるよう独自拡張でもしなければ出来ません。 「階層」という表現がよくわかりませんが、高水準言語、低水準言語という分け方が一般的かと。 http://ja.wikipedia.org/wiki/%E9%AB%98%E6%B0%B4%E6%BA%96%E8%A8%80%E8%AA%9E

sheep67
質問者

補足

こんにちは、いろいろお返事ありがとうございました。 自分で書いてて変ですが、 OSと、言語の関係は、はっきりしたものはあるのでしょうか? OSの上で走る言語、なるものは存在しますか? つまり、言語とOSはどちらが本質的なんでしょうか? あるいはそんな定義はないのかも知れないのですが、疑問なので、質問させてくださいー。 いえ違いますねーVBなどは、OSの上で動きますものねー。 でも・・ いわゆるインタープリンタとしてのベイシックやニーモニック、高級言語であるCやフォートランなどと、OSとの比較、という意味の質問にさせてください。

その他の回答 (5)

  • qaqa013
  • ベストアンサー率27% (17/62)
回答No.6

BASICでハードウェア制御ができる(特にCPU制御やメモリ制御)ならOSを書くのも不可能ではないかもね。 ただしほかの人が書いているようにMSXとx86系ではアーキテクチャーがまったく違う。 昔のZ80時代にはBASICで高速化したいところをマシン語で書くのは定番の技法でしたね。 後回答者の中に勘違いしている人がいてBASICはインタプリタ型のみと思いこんでいる人がいるけどコンパイラ型のBASICも過去には存在していました。(VBではなくて)有名どころだと富士通のF-BASIC386が有名ですかね。

sheep67
質問者

お礼

>BASICでハードウェア制御ができる(特にCPU制御やメモリ制御)ならOSを書くのも不可能ではない そうですか!そうですよねー。詳しい方に念を押してもらってすっきりしました! >Z80時代にはBASICで高速化したいところをマシン語で書くのは 僕もやりましたー、画面を印刷するプログラム作ったときにvramの読み込みだけマシン語で組みました、なつかしいー。 は~~一歩前進です。 またしょーもない質問させてもらうかも知れませんが、よろしくお願いします!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

>Cや、C++のかわりに、ベーシックで置き換えることはできるでしょうか?そういう意味で同じレベルのものと考えられるでしょうか? BASICの文法を捨てて、OSの記述のための文法に変えたらインタープリタ言語でOSが記述出来るか?って事ですよね。 書けることは書けると思いますが、実際OSに必要な動作を記述しているのがインタープリタを記述しているアセンブラなので、実質OSを操っているのはインタープリタと言う機械語プログラムの部分となります。分かりますかね?

sheep67
質問者

お礼

こんにちは! >書けることは書ける これが聞きたかったんですー! 納得ですー。 下の説明なんとか分かります。 確かインタープリンタは、逐次読み込んで1行ごとマシン語に変換して実行するんですよねー、大まかに。うんうん。 ありがとうございましたー。

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.4

1. マイクロソフトのシステム記述言語は、アセンブラ(MASM)、Microsoft Pascal、Microsoft C(当初はLattice-CのOEM)、Visual C、C++と移行していたと思います(最近の部分は、私のリタイア後なナので怪しいです)。現在は、C++が主力の筈ですが、カーネルの一部に古いの(OS/2時代の記述)が残っているはずです(もう無いかも)。現在でも、カーネルのLow-Levelな部分、ブートローダーやイニシャルデバイスのドライバはアセンブラで書かれているはずです。 なお、ホストでは事情が異なり、かなり早い時期から高級言語がシステム機じゃ津に使われます。有名なのはBurroughsのAlgolですが、IBMもPL/Iを使っていますし、他のメーカーもマクロアランブラのスーパーセットのようなのを使います。これは、x86のセグメント64Kにくらべ、IBMなどはページング1024バイトだったので、アセンブラで書くのは煩雑すぎるという理由もあります。 2. MSXはZ80用のOSですから、アセンブラもザイログニーモニックになり、x86で使っているマイクロソフトニーモニック(MASM)やインテルニーモニック(ASM86など)とは違いますから、そのままでは書くことはできません。 BASICには、ネイティブインタープリタと中間コードインタープリタ(p-code interpreterが代表的)があり、MSXも中間コードインタープリタですから、x86用のコードは出力不可能です。 知識として対応できるかと言えば、一番基本的な考え方は一緒ですから可能でしょうが、ハードルはとてつもなく高いです。 回送というのが、カーネル、デバイスドライバ、シェルという意味であれば、カーネルとデバイスドライバをすべて高級言語で書くのは現実的ではありません。シェルは高級言語だけで記述できます。 なお、MS-DOSでCが使われているのは一部の外部コマンドだけだったはずです。 後、インタープリタでOSが書けそうなのはFORTHくらいでしょう。

sheep67
質問者

お礼

回答ありがとうございます。 >1 お詳しいですねー!マイクロソフトにいるプログラマーの方がこつこつ作られてるんでしょうねー。(こつこつ?) >2 はい、僕が知りたかったのは、知識として対応できるか、と言う方ですが、理屈では可能、ということですね。やってやれないことはない・・みたいな。 だいぶすっきりしました!!

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

1. 大部分はそうだと思われますが、ソースコードが全部公開されているわけではないので、断定はできません タイミングのシビアなものとかは、アセンブリを使っているでしょう。 2. ニーモニックをいうのは機械語を人間がわかるような表現にしたもので、言語としては「アセンブリ言語」と呼ぶのが普通です。 >ニーモニックやベーシックは、現在のOSを作っている言語と同じ階層でしょうか? 「階層」ってどんな意味で使っているかがよくわかりません。 >理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? PCが理解し実行できるのは機械語だけです。  C言語はコンパイルして最終的に機械語に変換します。 機械語はニーモニックと1対1で対応しています。 ゆえに、アセンブリ言語だけでVistaを書くことは可能です。 が、現在の複雑で大規模なプログラムを全部アセンブリ言語だけで記述するのは、まったく非現実的です。

sheep67
質問者

お礼

こんにちは、遅くなり済みません。 階層という言葉は、・・なんというか、オブジェエクト志向のクラスや、あるいはネットのプロトコルの、階層がありますが、ああいう風な意味なのですが、 あまりそう言うことは一般的には、パソコン全体やプログラミング言語では言及されてるのを聞いたことがないので、無理に作った言葉です。すみません。 アセンブリ言語で書くことはやはり可能ですか・・ なんかだいぶ分かってきた気がします!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

>1今のウィンドウズOSは、調べたら、Cや、C+等で書かれている、とあるのですか、これでいいでしょうか? CやC++をメインとして、一部には、C#かVB.NET、C++/CLIなどが使われています。 >2.昔MSXというパソコンで学習していた、ニーモニックやベーシックは、現在のOSを作っている言語と同じ階層でしょうか? ニーモニックはアセンブラですね。MSXはZ80でウィンドウズはx86系なので規模が全く違いますが、WindowsOSの一部にはアセンブラも使われています。 ベーシックはインタプリタです。CやC++はコンパイラでアセンブラの出力と同じ機械語を出力します。なので同じ階層ではありません。 >理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? Z80の知識では書くことはできません。ベーシックでは記述することが出来ないほど複雑です。ちなみにMSX-DOSを作るにもアセンブラとC言語が必要です。 こんな答えでよろしいでしょうか?

sheep67
質問者

補足

MSXーDOSって、C言語で書かれてたんですかー。知らなかった。 あんな昔からあったんですねー。 パソコンが複雑に成りすぎて、自分が何が分かってないのかも分からなくなっていました。 というか回答文を読んで、アセンブラとコンパイラが違うのに気付きました。というか、今まで区別してなかったことの自覚もなかったので、たらーです。 wikiの方には、アセンブルもコンパイルも同じマシン語に直すこととありながら、 コンパイルは、一度アセンブリ言語に直してアセンブラにかけるんだ、という記述もあるのですが、いかがなものなんでしょうか? 後者が本当であれば、アセンブリ言語を元にして、高級言語が組み立てられている、という理解でいいのでしょうか? Z80といまのCPUはもちろん違うのですが、 もし、ベーシックが言語として非常に充実していていて、過不足ないとしたら、 処理速度の問題も除いたら、 Cや、C++のかわりに、ベーシックで置き換えることはできるでしょうか? そういう意味で同じレベルのものと考えられるでしょうか? (コンパイラとインタープリンタの違いは横に置いておいて) 同じものを作れる(厳密じゃないですが)という意味では、同じものでしょうか? OSは、大きなソフトだと考えるなら、インタープリタもコンパイラも、OSを記述することができるという意味で、OSより本質的なものと言えるでしょうか? アバウトな質問が続き済みません。

関連するQ&A