プログラムの実行

プログラムの実行

ソースコードが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.
ノート一覧を閉じる