Gcc は、アセンブリ コードを一時ファイルとして作成し、アセンブラを呼び出します。また、コマンド ラインで何を追加するか、何を追加しないかによって、リンカを呼び出すこともあります。これによりオブジェクトが作成され、バイナリが有効になっている場合、すべての一時ファイルがクリーンアップされます。-save-temps を使用して、実際に何が起こっているかを確認します (多数の一時ファイルがあります)。
オプションなしで gcc を実行すると、asm ファイルが完全に作成されます。
これには「必要性」はありません。単に彼らがたまたまそれを設計した方法です。複数の理由から、コンパイラーを開始する前に、アセンブラーとリンカーがすでに必要/必要になると思います(馬の前にカート、他の言語の前にプロセッサーのasm)。「UNIX の方法」は、ツールやライブラリを再発明するのではなく、上に少しだけ追加することです。そのため、asm に移動して、アセンブラーとリンカーに残りを任せることを意味します。そのように、アセンブラーのジョブの多くを再発明する必要はありません (複数のパス、ラベルの解決など)。開発者にとってはビットより ascii asm をデバッグする方が簡単です。人々は何世代にもわたるコンパイラでこの方法を行ってきました。ジャスト イン タイム コンパイラは、この習慣の主な例外です。定義上、マシン コードにアクセスできる必要があるため、実行または実行できます。