• ベストアンサー

コンパイラとアセンブラの違い

教えてください。 できれば特徴とかをわかりやすく教えて欲しいです お願いします

noname#6448
noname#6448

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

  • ベストアンサー
noname#9414
noname#9414
回答No.1

コンパイラとアセンブラというよりも コンパイルとアセンブルの違いを書いた方が いいと思うので、それを書きます。 アセンブル:  アセンブラ言語で書いたソースプログラムを  機械語に変換すること。 コンパイル:  C言語やPascalと言った高級言語で書かれた  ソースプログラムをオブジェクトプログラムに  訳すこと。 オブジェクトプログラム:  ソースプログラムをコンパイラで翻訳し、出力  したプログラム。UNIXやMS-DOSでは、まだ  完全な機械語になっていない。この後リンカに  よって実行可能プログラムになる。 以上です。 分かりづらいところがありましたら、 補足してください。 ではでは☆

その他の回答 (3)

  • BigFoot
  • ベストアンサー率31% (16/51)
回答No.4

アセンブラは、CPU固有の機械語命令を 1命令づつ記述されたもの(アセンブラ言語)から 中間言語(オブジェクト)を生成するもので、 コンパイラは、高級言語と呼ばれるもの (C/C++言語、COBOL、Fortranなど)を、 機械語命令に翻訳し、中間言語(オブジェクト)を 生成するものです。 そして、生成されたオブジェクトを リンケージエディタ(リンカ)というもので リンクさせると、実行可能なもの (Windows等では、EXE の拡張子のもの)が 生成されます。 ですから、 アセンブラは、使用するCPUによって 記述が異なります。(互換性がない場合) 記述としては、 (Intel系のCPU) MOV   EAX,EBX とか、 (日立マイコン) MOV.L ER4,ER5 みたいな感じです。 高級言語の場合は、特殊な場合を除いて 特に、機械語を意識して記述する事はありません。 (C言語の記述例) short i; for( i=0; i<100; i++ ){ printf( "Num[%2d]\n", i ); } ですから、ソース互換の高級言語ファイルを 異なるアーキテクチャのマシンで、 それぞれコンパイルした場合、 全く違うものが生成されます。 通常、Windows用アプリケーション開発などは、 高級言語を使用しますが、 民生器機に組み込まれる制御ソフト等では、 (全てではないにしろ)アセンブラで記述することが 多いですし、どうしてもアセンブラ記述する部分が 発生します。 以上、何か参考になれば幸いです。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

特徴ですが、アセンブラは、高速でコンパクトなプログラムが書ける。コンパイラは、複雑なプログラムが書ける。 というようになると思います。 (もちろん、これは「傾向」で、プログラムやプログラマによって変わってくる事は言うまでもありません) あと、アセンブラのみを使ってプログラムを書く事は滅多に無いです。 通常はコンパイラを使ってプログラムを書き、高速な動作が必要な部分だけを、アセンブラで記述するって使い方が一般だと思います。

noname#25358
noname#25358
回答No.2

 機械語とは、コンピュータを制御する最終的な言語のことで、それらは数字だけで記述されています。  基本的に、機械語の1命令と1:1で対応した命令を記述するのがアセンブリングです。  機械語には「レジスタに値を入れる」「アドレス???から値を抜く」「レジスタAとBの値を足す」などの最低限の命令しか備わっておらず、人間には分かりにくいです。  それに対しコンパイラによってコンパイリングされる言語は「ファイルを開く」「画面に文字を出す」などの人間に分かりやすい命令で作られています。  Windowsでは現在のところ、アセンブラは出てないようなので、基本的にコンパイラです。  こんなところでよろしいでしょうか(^_^;

関連するQ&A

  • コンパイラーとアセンブラの違い

     今晩は。  コンパイラーとアセンブラとは何がどう違うのでしょうか。 またコンパイラー、アセンブラは、その後に更に機械語に変換されるとききましたが、なぜ一気にソースコード から機械語に変換しないのですか。  他にCalsという言語もあると聞きましたが、この言語も機械語とは違うと聞きました、とするとそもそもこの 言語自体の役割は何なんでしょう。

  • アセンブラとコンパイラ

    アセンブラとコンパイラについて教えてください。

  • アセンブラ、コンパイラ・・・

    質問が多くて大変申し訳ありませんが、よろしくお願いいたします。 ブートストラップローダ、アセンブラ、コンパイラ、インタプリタ、リンカ、ローダ について説明してください。 また、GUIがどのように進化したらコンピュータが使いやすくなると思いますか?

  • コンパイラとインタプリタとアセンブラの違いって何?

    言語プロセッサの説明で「コンパイラ、インタプリタ、アセンブラ」などがあると書かれていたのですが、 コンパイラもインタプリタもアセンブラもどれも説明が「機械語に翻訳する」と書かれていました。 何が違うのでしょうか? 違いをわかりやすく教えてください。 いろいろなプログラミング言語があるというところまでは理解できましたが、プログラミングはわかりません。(涙) これから勉強します。

  • コンパイラの違いについて

    こんばんはです。 実は、ビジュアルスタジオで組んだCソースをBolrand C++コンパイラで組んでるPCで実行すると、違った結果が出てきてこまってます。 visualstudioでもBolrandでも、ソースのコンパイルはエラーなしでとおります。 しかし、実行すると、結果が違うのです。これって・・・? 結果と言うのはstrcmpでかえってくる数字なのですが、studioでエグゼつくって実行すると、0も1もー1も返ってきて判断分岐できるのですが、Bolrandの方でエグゼつくって実行すると、0しか返ってきません。なので、分岐は0の時だけの対応しかできないのです。 もっとくわしくいいますと、studioの方もBolrandの方もコンパイルはプロントでおこなっており、studioはcl test.c Bolrandはbcc32 test.c と言う具合に行ってます。 もしかして、古さの違いとかってあるのです?? 昔は構造体のコピーってa = bってできなかったではないですか? 今はa = bできますよね。そういう感じなのでしょうか?? ご存知の方いらっしゃいましたらアドバイスいただきたいです。 よろしくおねがいいたします。

  • コンパイラの違いについて

    私は今まで,"BorlandC++5.5.1"を使用してコマンドラインで実行していたのですが,あるプログラムが実行時に問題が発生->処理中断となる. 原因不明のエラーが出ました.  メモリ関係の問題と考え,手をつくしたのですがうまくいかず友人のg++でコンパイル->実行すると"free() invalid pointer"と出ました. もう,にっちもさっちもいかないので試しに"Visual C++2008 体験版"でビルド->実行すると動きました. 一応ちゃんと動いているようなのですが,なぜかわからず気持ち悪いのです…. 最適化の差なのでしょうか? どなたかお答いただけませんか? ちなみに,質問板の利用は初めてです.長文失礼しました.

  • コンパイラとエディタについて・・・

    Jビルダー、JDK、SDK、他コンパイラってどれを使ってもいっしょなんですか?なにか特徴があれば教えてください。 あと、エディタはメモ帳以外になにがありますか?秀丸ってのもエディタですよね?でも4000円送金しなくちゃいけないんですか?一番いいコンパイラとエディタの組み合わせが知りたいです。 最後に、VisualJ++っていうのはどういうやつなんでしょうか? よろしくお願いしますm(__)m

    • ベストアンサー
    • Java
  • GNUコンパイラとIntelコンパイラの違いについて

    今回fortranとC言語で書かれたWindows用プログラムをLinux用に移植することになりました。GNUのコンパイラを使用し無事コンパイルできたので実行したのですが"Segmentation fault"となりうまく実行できませんでした。そこで試しにIntelのコンパイラを使用しコンパイルしてみたところGNUのときとは違い"Segmentation fault"とは出ず、プログラム内のエラーチェックに引っかかり止ってしまいました。同じソースコードにもかかわらず止まる箇所が異なります。 今まで考えたことがなかったのですがGNUとIntelのコンパイラの違いはなんなのでしょうか?また、この二つ以外にいいコンパイラはあるのでしょうか?

  • コンパイラとインタプリタの違い

    コンパイラとインタプリタの違いを簡単に、かつ、解りやすく説明して頂けませんか? 詳しい方お願いします。

  • パーサとコンパイラの違いって?

    C++を勉強中で、小さなソフトをいくつか作ったのですが、パーサという概念があることを知りました。 構文解析をするという点ではコンパイラと同じようなものに感じるのですが、パーサとコンパイラはどのように違うのでしょうか?? 詳しい方いらっしゃいましたらご教示頂けると幸いです。

専門家に質問してみよう