その本とは、
矢沢久雄著「プログラムはなぜ動くのか」(第3版)
です。
それについては、
⇒ こちらの記事をご覧ください。
今回も、その本の最初の部分しか読むことができなかったのですが、今回は丁寧に読み込んで、読んだ部分はしっかりと頭の中に叩き込んできました。
人間(ユーザー)が書いたプログラムは、PC内部でどのように実行されるのか、プログラム実行時、PC内部でどんなことが起きているのかが解説されています。なお、プログラムとは、コンピュータが行う処理を順序立てて記述した命令の集まりです。
プログラムが実行される過程は、具体的には、次のような流れとなります
1 ユーザーがプログラムの起動を指示
2 OSが、ハードディスクに保存されているプログラムをメモリにコピー(ロード)
3 レジスタの一つであるプログラムカウンタに、プログラムが格納されたメモリ上のアドレス番地(つまりプログラムの先頭番地)を設定
4 CPUの制御装置がプログラムカウンタの値を参照してメモリ上の命令を読み出し、プログラムの実行を開始
5 CPUが1つの命令を実行するたびに、プログラムカウンタの値が命令のサイズ分だけ自動的に増加
6 CPUの制御装置は、プログラムカウンタの値を参照して、メモリから次の命令を読み出して順次実行
このように、プログラムカウンタがプログラムの流れを決める重要な役割を果たしています。
すなわち、プログラムカウンタは、
次に実行する命令が格納されたメモリのアドレスを格納するレジスタ
です。
なお、レジスタにはいくつかの種類があって、値の種類によって、格納するレジスタの種類は異なります。そのレジスタの種類の一つが、上記「プログラムカウンタ」です。
プログラムの流れには
1 順次進行
2 条件分岐
3 繰り返し
と、3種類あります。2 条件分岐
3 繰り返し
順次進行であれば、プログラムカウンタの値は順次増加していくだけですが、プログラムの中に条件分岐や繰り返しがある場合は、それらのマシン語命令が、プログラムカウンタの値を任意のアドレスに設定することになります。
これによって、前のアドレスに戻って同じ命令を繰り返したり、任意のアドレスにジャンプして分岐ができるというわけです。
PCを日常的に使っていますが、内部がこのように動いていることは知りませんでした。これまで、PC内部の動作を意識したことはほとんどありません。
メモリとCPUの間で、命令やデータのやり取りが一つ一つ丁寧に行われているんですね。しかも、それがごく短時間で、いえいえ短時間とまでもいかないくらいの瞬時に、超高速で行われているのだから驚きです。すごいことです。
これまで、当たり前のこととしてPCを使っていました。
が、今回の読書で、内部の動作を詳しく知り、コンピューターのことがより身近に感じられるようになりました。
◆ プログラムはなぜ動くのか(第3版)
それでは、また次の記事で
■■■■ goosyun ■■■■