プログラムはなぜ動くのか(第3版)を読んで、ソースコードがどのような流れで実行されるのか理解できてきたので超簡単にまとめてみたいと思います。
プログラムがソースコードから実際に実行されるまでの流れ
1. ソースコードをコンパイル+リンク
プログラマが作成したソースコードのままではCPUが読むことができないため、CPUが読める言語(マシン語)に変換(コンパイル)する必要がある。
またプログラマの自作関数は、ソースコードの書かれたファイル内にその内容が書かれているのに対し、すでに定義されている関数(ビルトイン関数)の場合、その内容は書かれていない。
そのためそのビルトイン関数の処理内容が書かれているファイルを結合し(リンク)、実行ファイル(CPUが読んで実行できるファイル)が完成される。
2. メインメモリー上でプログラムを実行
プログラムが実行される段階になると、メインメモリー上に実行ファイルのコピーが作成される。そしてCPUがその実行ファイルを読み込むことで処理が実行される。
以上。
補足
コンパイラ
ソースコードのコンパイラは、記述されている言語、OS、CPUの種類によって異なっている。
例えば同じC言語のコンパイラでもLinux用、Windows用、さらにLinuxの中でもx86系用、MIPS用といったように異なっている。
CPU
CPU内部は下記に示す4つから構成されている
・レジスタ
CPU内におけるメモリーのような役割。ここに命令やデータを置いて処理を行う。
・制御装置
メモリー上の命令やデータをレジスタに呼び出し実行させる。
・演算装置
文字通り演算等の役割を担う。
・クロック
CPUの動作タイミングとなるクロック信号を出す。
超簡単にですが、まとめてみました。
本書はこの100倍くらい詳しくプログラムの動作原理について解説されているので、この辺りの知識をつけたい方にはとてもおすすめです。
参考文献:
「プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識」
矢沢 久雄 (著) 日経BP (2021/5/13)