私は主にgccのような一般的に広く使われているコンパイラに興味があります。しかし、コンパイラごとに異なることがある場合は、そのことも知りたいと思います。プログラミング言語コンパイラは、最初にアセンブリに変換するか、直接機械語に変換しますか?
gccを例にとると、Cで書かれた短いプログラムをマシンコードに直接コンパイルするのですか、それとも人間が読めるアセンブリに変換してから組み込みの組み込みアセンブラ組み立てプログラムをバイナリに翻訳するには、マシンコード - 一連の命令をCPUに送りますか?
バイナリ実行可能ファイルを作成するためにアセンブリコードを使用していますが、かなり高価な操作ですか?それとも、それは比較的簡単で迅速なことですか?
は(我々は、プロセッサの唯一のx86ファミリーを扱っていると仮定しましょう、そしてすべてのプログラムは、Linuxのために書かれている。)
が、私は任意の助けのために非常に感謝されるだろうと問題に思いました。ありがとうございました!
直接実行可能ファイルを生成するために使用されるいくつかの歴史的なコンパイラ。コンパイル中に実行可能な.COMファイルを1回のパスで書き込むこともできます。各プロシージャのコードに続いて、コンパイラはそのプロシージャ内のパッチ・ポイントのリストを前のプロシージャのパッチ・ポイント・リストのアドレスとともに出力できます。スタートアップコードは、コードがロードされたときに必要なすべてのパッチを作ることができます]。これにより、フロッピーディスクを使用する場合でも、非常に小さなメモリフットプリントで迅速なコンパイルが可能になりました。 – supercat