• ベストアンサー

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

BigFootの回答

  • 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用アプリケーション開発などは、 高級言語を使用しますが、 民生器機に組み込まれる制御ソフト等では、 (全てではないにしろ)アセンブラで記述することが 多いですし、どうしてもアセンブラ記述する部分が 発生します。 以上、何か参考になれば幸いです。

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