4.記憶クラス

4-2. レジスタ

◆レジスタ

レジスターといえば、スーパーのレジ(Cash register)が思い浮かびますが、パソコンでのレジスターはCPUの中の演算装置を意味します。

…..で、このregisterと言う記憶域間ですがなんであるか。

まずは、通常の変数の場合の演算を図示してみます。

◇変数に初期値は3でその値に7を足して新しい値にする。

1.メモリからレジスタへ値をコピー

  レジスタ         メモリ
             ┌─────┐
□□□□□□■■ ←── │  3  │
       3     └─────┘


2.レジスタで計算

  レジスタ         メモリ
             ┌─────┐
□□□□■□■□     │  3  │
      10     └─────┘


3.結果をメモリに戻す

  レジスタ         メモリ
             ┌─────┐
□□□□■□■□ ──→ │ 10  │
      10     └─────┘

というような処理をします。

※レジスタの□と■はビットをあらわしています。

これがレジスタ変数の場合、データ領域をメモリに確保せずレジスタに確保するため。上と同じ計算をする場合においてメモリに対して読み込み書き出しの動作がなくなるので高速化します。上の図では1と3の必要がなくなるわけです。

使用目的としては繰り返し動作のカウンタなど一時的に連続使用するものに使うのが適当です。

ただし、レジスタの数はメモリに比べるとかなり限られるのでもしレジスタオブジェクトの数があふれたときレジスタの足りない分はメモリに領域を確保することになります。

それ以外の動作は自動記憶域期間(auto)と同じになります。