プログラムはなぜ動くのか(前編)

ーー第1章 プラグラマにとってCPUとはなにかーー

 

■プログラム実行のイメージ

1、高水準言語でプログラムを記述する。

2、プログラムをコンパイルしてマシン語のEXEファイルに変換する。

3、プログラムの起動時に、EXEファイルのコピーがメモリー上に作成される。

4、CPUがプログラムの内容を解釈・実行する。

 

■CPU

・メモリー ー 大抵の場合は、メイン・メモリー(主記憶)。CPUと制御用チップなどを介して繋がっていて、命令とデータを格納する。

・機能面から考えると、「レジスタ」「制御装置」「演算装置」「クロック」の4つの装置から構成されている。

・「レジスタ」処理対象となる命令やデータを格納する領域。

・「制御装置」メモリー上の命令やデータをレジスタに読み出し、命令の実行結果に応じて、コンピュータを制御する。

・「演算装置」メモリーからレジスタに読み出されたデータを演算する役目を持つ。

・「クロック」CPUが動作するタイミングとなるクロック信号を発生させる。

 

■条件分岐と繰り返しの仕組み

・プログラムの流れはプログラムカウンタによって決められる。

・プログラムの流れは3種類

「順次進行」アドレスの値の順に命令を実行すること

「条件分岐」条件に応じて任意のアドレスの命令を実行すること

「繰り返し」同じアドレスの命令を何度か繰り返し実行すること。

 

■関数呼び出しの仕組み

・コール命令とリターン命令によって実現される。

・「コール命令」関数の入り口のアドレスをプログラム・カウンタに設定する前に、関数呼び出しの次に実行すべき命令のアドレスをスタックに格納。

・「リターン命令」スタックに保存されたアドレスをプログラム・カウンタに設定する。

 

■TIPS

・ベースレジスタとインデックスレジスタによって配列を実現する。

・CPUで主にできること

「データ転送命令」「演算命令」「ジャンプ命令」「コール/リターン命令」

 

 

ーー第2章 データを2進数でイメージしようーー

 

2進数について、シフト演算、補数とか

 

 

ーー第3章 コンピュータが少数点数の計算を間違える理由ーー

 

浮動小数点数やそれに用いられる、正規表現やイクセス表現など

 

 

ーー第4章 四角いメモリーを丸く使うーー

 

モリーの仕組みや、スタック、キュー、リスト、二分探索木など。

 

 

ーー第5章 メモリーとディスクの親密な関係ーー

 

ストアドプログラム方式、ディスクキャッシュ、仮想記憶、ページング、DLLファイルの関数共有など。