• ベストアンサー

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

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

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

●回答(1) 後者が正しいです。 http://ja.wikipedia.org/wiki/ソースコード の編集履歴を参照してみましたが, 「アセンブラ用の文字列で記述されたプログラムはソースコードとは呼ばれないのが普通」 というのは,この箇所を書いた 2009年6月18日 (木) 11:26 Tosaka (全体に加筆と編集) という人の独断でしょう。アセンブリ言語であっても上記ページ内の定義に該当するのにどういう理由でアセンブリ言語だけを除外しているのか,この執筆者はその根拠を示していません。 ●回答(2) IT用語辞典が正しいです。アセンブラ言語のソースコードと,目的プログラムとは別物です。 コンパイラは翻訳結果として機械語(目的プログラム,実行プログラム)を出力できればいい。翻訳結果としてアセンブラ言語を出力できるコンパイラ製品もありますが,その機能を持っていなくてもコンパイラと呼べます。 http://okwave.jp/qa5107126.html?ans_count_asc=0 の私の過去の回答No.3, No.7

wooyan_52
質問者

お礼

ありがとうございました。 おかげで大分理解できました。

その他の回答 (3)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.4

回答者No.3です。 Wikipediaは誰でも書き換えることができますので,たった今,内容を書き換えました。 「ソースコード の変更履歴」の (最新) 2009年9月19日 (土) 17:01 JJon.com (アセンブリ言語でもソースコードと呼ぶ) がそれです。(日本における時刻は上記に+9時間してください)

wooyan_52
質問者

お礼

>>たった今,内容を書き換えました。 す...すごい。 それにしても Wikipediaにも間違いがあるとは思いませんでした。(汗)

  • petertalk
  • ベストアンサー率69% (156/225)
回答No.2

質問(1) >注2:【アセンブリ言語で書かれたプログラムはソースコードと呼ばれない】 この記述は間違っています。 以下は Microsoft のマクロ・アセンブラーの起動時のメッセージですが、 入力ファイルを source(.asm)、出力ファイルを out(.obj) と表現しています。 また、IBM の High Level Assembler z/OS & z/VM & z/VSE の説明にも、 「一般的なコーディング・エラーを広範囲にわたって検査しながら、 シンボリックなソース・ステートメントを マシン言語のオブジェクト・コードに変換することができます」とあります。 http://www-06.ibm.com/jp/domino02/NewAIS/aisextr.nsf/ByLetterNo/SWA04094?OpenDocument&ExpandSection=1 質問(2) >ソースプログラムをコンパイラで翻訳するとアセンブリ言語になるんではないのですか? >そのアセンブリ言語をアセンブラで翻訳して機械語になるのではないのでしょうか? Wikiにこう書いてあったのでそう理解されたのかもしれませんが、これも違います。 コンパイラの仕事は、ソースプログラムを翻訳してオブジェクトプログラムを生成することです。 内部的には、ソースプログラムから、直接、機械語を生成するタイプもあるし、 一旦アセンブリ言語を生成し、それをアセンブルして機械語を生成するタイプもあります。 しかし、それはあくまで内部処理の話であって、使用者からは見えない部分だし、 最終的にコンパイラが生成するのは機械語です。

wooyan_52
質問者

お礼

大分理解できました。 ありがとうございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

(1)ソースコードを、「オブジェクトコードを生成するためのテキスト」と定義するなら、アセンブリ言語を手入力したファイルは、ソースコードと呼んで良いかと。 例えば、gccやMS-Visual C++では、Cのコード中にx86ニーモニックをインライン形式で記述できます。このファイル(拡張子cとか。)はソースコードと呼べないのか、みたいな。 (2)Cのソースから直接オブジェクトコードを生成するコンパイラがあります。なので、アセンブラ及びアセンブリ言語を前提とする必要はないかと。

wooyan_52
質問者

お礼

ありがとうございました。

関連するQ&A