私はプログラミングに不慣れで、C++言語がC++コンパイラ(Ex:Visual Studio)によってアセンブリ言語に変換されることを知っている限り、C++言語から始めましたが、アセンブリ言語をマシンコードに変換するものを探してみましたコンピューターで理解され実行されたが、答えが見つからなかった。
それで問題は、アセンブリ言語はどこでどのようにマシンコードに変換されるのでしょうか? OSに統合されたある種のコンパイラによるものですか?
前もって感謝します。
一部のコンパイラ(GNUなど)は、C/C++コードをアセンブリコードに変換します。 「アセンブラー」と呼ばれるツールは、アセンブリコードをマシンコードに変換し、「リンカー」と呼ばれるツールは、複数のマシンコードファイルを単一の実行可能ファイル(Windowsでは.EXE)に接続します。これらのコンパイラのほとんどでは、結果のアセンブラコードをファイルに書き込んで、アセンブラコードを確認したり変更したりできます。
アセンブラーとリンカーはツールチェーンの一部です。つまり、これらは通常コンパイラーと一緒に提供されます。
ただし、一部のコンパイラ(Microsoftなど)は、C/C++コードを直接機械語に変換するため、アセンブラは必要ありません。これらのコンパイラの多くはアセンブラコードを作成できないため、アセンブラコードをファイルに書き込むことができません。
ちなみに、.EXEファイルを直接作成するコンパイラ(C/C++ではなく他のプログラミング言語用)もあるので、リンカーは必要ありません。
コンパイラが高レベルのコードを以下のようなアセンブリ言語に変換すると-
アセンブラは、これらのアセンブリ命令をマシンコードに変換します。
アセンブリ命令の典型的な形式は次のとおりです。opcodeオペランド[オペランド]
マイクロプロセッサのマニュアルを確認すると、各命令を1001000のようなバイナリ形式に変換する方法を知ることができます。一部のビットはオペコード用で、一部はオペランド用です。
アセンブリ言語は、アセンブラと呼ばれるユーティリティプログラムによって実行可能なマシンコードに変換されます。変換プロセスは、アセンブリ、またはコードのアセンブルと呼ばれます。
続きを読む こちら
乾杯!!
アセンブリコードは、 assembler と呼ばれるものを介して実行されるため、オブジェクト/マシンコードへの変換と同様のプロセスを持っています(指定された例のコンパイラに類似) )。