基本的なことコンピュータの命令/プログラムの機能を使って、高レベル言語でソースコードを書くことを学びました。コンパイラは低レベル言語(機械コード/オブジェクトコード)に変換します。アセンブラーはアセンブリ言語を機械コード/オブジェクトコードに変換することも学びました。コンパイラは直接ローレベルにハイレベルを変換する場合は、このアセンブリ言語が生成されることから高水準言語をアセンブリ言語に変換する人
:
は、それから私は、次の疑問を持っています。変換プロセスは、アセンブリ言語、すなわちを通過する必要がある場合
高水準言語====>アセンブリ言語====>オブジェクトコード/マシンコードは、
はその後、変換
一般に、誰もいません。高レベルのコンパイラは、ソースコードを*アセンブリ言語*に変換しません。むしろ、オブジェクトコード/マシンコードに直接変換します。アセンブリ言語は、プログラマのために設計された、人間が読めるオブジェクト/マシンコードのバージョンです。 (しかし、他の答えが示唆しているように、生成されたオブジェクト/マシンコードのアセンブリコードのリストを与えるために、コンパイラに高水準言語を依頼することはほとんどいつでも可能です。発生する)。 –
@CodyGray:gccは非常に広く使用されています。実際には、コンパイラからのテキスト出力としてasmを作成し、別の実行可能プログラムを実行する別個のプロセスとしてアセンブラを実行します。 (tmpファイルまたはパイプ)。 'binutils'はgcc自身とは別のパッケージです。したがって、コンパイラの中にはこのようにコンパイルするものがあります。 Clangはそうではなく、ポータブルでないコンパイラもしばしばマシンコードに直面することがよくあります。 –
機械語を表現する方法としてアセンブリ言語を表示できます。アセンブリ言語ステーションでコンパイラを停止する必要はありません。 –