プログラムの実行
ソースコードがCPUで動くまでの段階。分割されているのは分割コンパイルと再利用のため。
書いたソースコードが、実際に CPU で動くまで。
ソースコード
↓ [[コンピュータ/言語処理系/コンパイラ|コンパイル]]
[[アセンブリ]]
↓ アセンブル
オブジェクトファイル
↓ [[リンカ]]
[[実行ファイル]]
↓ [[ローダ]](実行時)
メモリ上のプロセス
↓
[[機械語]]の実行なぜ段階に分かれているのか#
一気に変換してもよさそうだが、分けることで
- 分割コンパイルができる。1 ファイル直したら 1 ファイルだけ再翻訳
- ライブラリを再利用できる
- 言語とアーキテクチャの組み合わせを分離できる
大規模開発ではビルド時間が支配的になるため、 この分割は実用上きわめて重要。
構成#
参考文献#
- Randal E. Bryant, David R. O’Hallaron. Computer Systems: A Programmer’s Perspective, 3rd ed. Pearson, 2016. https://csapp.cs.cmu.edu/
- John R. Levine. Linkers and Loaders. Morgan Kaufmann, 1999.