• ベストアンサー

osのwindowsはアセンブリ言語でも作られてい

osのwindowsはアセンブリ言語でも作られていると書いてあるんですが、 アセンブリ言語って機械語に近い低級言語ですよね? windowsを人間がコーディングするときにアセンブリ言語を打つんですか? 大変じゃないんでしょうか?

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

  • ベストアンサー
  • watanabe04
  • ベストアンサー率18% (295/1597)
回答No.2

機械がわかるのは機械語だけ、人間がわからない言語です。 人間がわかるようなもので記述して機械語に変換すればいいじゃん? ということでいろいろな言語が開発されました。 高級言語になるほどわかりやすいですが、「変換(コンパイル)」には 相当な負担がかかり、複雑な処理には時間がかかります。 OSなんか作っているとその時間がばかにならないことがあります。 なので核心部分だけ機械語(ニーモニック)で作るのです。

okwaveokw
質問者

お礼

ありがとうございます

その他の回答 (2)

回答No.3

貴殿はアセンブラに興味が有るのでしょうか? そうでなければ気にしないで下さい、 C言語などもコンパイル過程で一時アセンブラに 変換されて、そこから機械語に翻訳されます。 興味が有るなら「CASL2」から始めて、 「アセンブリ言語の教科書」を読んでみて、 その後のご自身の進路を検討しましょう。

okwaveokw
質問者

お礼

ありがとうございます

回答No.1

>windowsを人間がコーディングするときにアセンブリ言語を打つんですか? 使うのはニーモニックだと思いますよ。 また、 >osのwindowsはアセンブリ言語でも作られていると書いてあるんですが、 これも誤解を招きます。 あくまで一部には、使われるというだけで、 全部をアセンブラで書いていると受け取られかねません。

okwaveokw
質問者

お礼

ありがとうございます

関連するQ&A

  • アセンブリ言語とC言語

    アセンブリ言語とC言語について調べているのですが、この二つ言語のプログラムについて実質的に同じと言えることはなんでしょうか? また異なっていることはなんでしょうか?(たとえばアセンブリは低級言語であり、C言語は高級言語であるなどなんでもいいです。) 是非解答お願いします。

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

    アセンブリ言語と機械語は一対一で対応しているので、実行ファイルがあれば逆アセンブルすると 完全に元のアセンブリコードが復元できるのでしょうか?教えていただけないでしょうか?すみません。

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

    高水準と低水準言語の違いは、まず、マシン語の2進数の羅列では分からないからアセンブリ言語が生まれ、 アセンブリ言語よりさらに人間が理解できる言語が、C言語やBASICなどでしょうか?教えていただけないでしょうか?合っていますでしょうか?

  • アセンブリ言語は原始プログラムですか?

    質問(1) アセンブリ言語というのは、 add $S1, $S2 みたいなやつですよね? wikipediaで「ソースコード(ソースプログラム、原始プログラム)」の注釈1,2を読むと、 注1:【機械語の命令に記述するアセンブリ言語(アセンブラ)が存在するが、このアセンブラ用の文字列で記述されたプログラムはソースコードとは呼ばれないのが普通である。】 注2:【アセンブリ言語で書かれたプログラムはソースコードと呼ばれない】 と書かれてあります。 でも、 他の教材では アセンブリ言語で書かれたプログラム(原始プログラム) と書かれています。 どっちが正しいのでしょうか? 質問(2) 目的プログラム(オブジェクトプログラム)とは、 IT用語辞典によると 【オブジェクトプログラムとは、ソースプログラム(人間が認識できるプログラム言語で高水準言語など?)をコンパイラで機械語に翻訳したプログラムのことである】 とありますが、 ソースプログラムをコンパイラで翻訳するとアセンブリ言語になるんではないのですか? そのアセンブリ言語をアセンブラで翻訳して機械語になるのではないのでしょうか? どなたかご教授ください。 お願いします。

  • プログラミング言語の アセンブリ言語 ニーモニ

    プログラミング言語の アセンブリ言語 ニーモニック マシン語 機械語 バイナリー 0と1で表す言語010010等 これらの違い関係性を教えてください

  • 機械語とアセンブリ言語の違いを教えてください

    機械語とアセンブリ言語の違いを詳しく教えていただけんか?

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

    アセンブリ言語と機械語は一対一で対応しているので、実行ファイルがあれば逆アセンブルすると 完全に元のアセンブリコードが復元できるのでしょうか?教えていただけないでしょうか?すみません。教えていただけないでしょうか?すみません。どういった例が挙げられますか?

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

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

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

    >2進数の羅列では人間にはあまりに読み書きしにくいからです。 >それを命令単位に区切って、英単語を元にした名前を与えたのが、 >アセンブリ言語です。 ニーモニックとは、その命令の名前の事です。 簡潔に要点がまとまっている、すばらしい説明ですね。その通りです。 これで理解できないなら、追加の説明のしようがありません。 (なお、このように、他人の発言は引用符を付けて引用すると、わかりやすくなります。是非そうしてください。) まあ具体例を挙げるならこんな感じ。 (機械語データ) (アセンブリ言語) b8 57 61 6b 61 mov $0x616b6157,%eax 53 push %ebx 50 push %eax ba 04 00 00 00 mov $0x4,%edx bb 01 00 00 00 mov $0x1,%ebx b8 04 00 00 00 mov $0x4,%eax 89 e1 mov %esp,%ecx cd 80 int $0x80 58 pop %eax 31 c0 xor %eax,%eax 5b pop %ebx c3 ret 人間がCPUを直接動かすプログラムを書こうとするとき、アセンブリ言語を使って書きます(右側の部分)。 mov $0x616b6157,%eax push %ebx push %eax mov $0x4,%edx mov $0x1,%ebx mov $0x4,%eax mov %esp,%ecx int $0x80 pop %eax xor %eax,%eax pop %ebx ret そしてこれをアセンブルすると、1対1対応した機械語のデータ列が出来ます。 それが b8 57 61 6b 61 53 50 ba 04 00 00 00 bb 01 00 00 00 b8 04 00 00 00 89 e1 cd 80 58 31 c0 5b c3 この部分。 機械語には改行なんてありませんから、実際は一連の b8 57 61 6b 61 53 50 ba 04 00 00 00 bb 01 00 00 00 b8 04 00 00 00 89 e1 cd 80 58 31 c0 5b c3 と言うデータ列になります。 これをCPUが実行していきます。 相当熟練した人で無ければ、このデータ列を見るだけでプログラム構造を理解する、というわけに行きません。 なので、人間が機械語レベルでプログラミングする際には、アセンブリ言語を使います。 ※この回答のプログラムはこちらから引用しました。 >31バイトでつくるアセンブラプログラミング アセンブラ短歌の世界 >https://book.mynavi.jp/support/pc/4946/c01_assembra.pdf で、機械語データは、なぜ、0と 1だけではないのでしょうか?教えていただけないでしょうか?すみません。

  • アセンブリ言語について調べていたら、 0x8BEC

    アセンブリ言語について調べていたら、 0x8BECというのを機械語だと説明している動画がありました https://www.youtube.com/watch?v=8EcHs4UGgMc&t 機械語は0と1 もしくは0と1を16進数で表すものですよね? 0x8BEC これも機械語なんですか?

専門家に質問してみよう