コンパイル・アセンブル

どこまでがコンパイルで、どこからがアセンブルが実はよく違いがわかっていなかった。

コンパイルアセンブルの違い

広義には、「ソースコードから実行可能な形式に変換すること」をもってコンパイルと呼ぶ。

狭義には、
ソースコードから中間言語アセンブリ言語に変換し、アセンブリコードを生成する」 までがコンパイル
アセンブリコードから機械語まで変換し、オブジェクトコードを生成する」 のがアセンブル
linuxではコンパイルgccが行い、アセンブルbinutilsが行う。
オブジェクトコードに変換後に、必要なライブラリとのリンクを行って実行可能な形式であるロード・モジュールになる。
つまり厳密にプロセスを分解するならば、
 ソースコードアセンブリコード:コンパイル
 アセンブリコード→オブジェクトコード:アセンブル
 オブジェクトコード→ロード・モジュール:リンク
という3段階からなる。

ロードモジュールとは

メインメモリーにロードできる実行ファイル形式のモジュール。プログラムがモジュールの集まりで構成されている場合、リンカによって結合されることで、ひとつのロードモジュールとして扱われる。