レジスタ
混乱してきたので一旦整理。簡単なメモ。
レジスタとは、マイクロプロセッサ(MPU/CPU)内部にある、演算や実行状態の保持に用いる記憶素子。最も高速な記憶装置だが、一般的なCPU製品で数個から数十個(容量に換算して数十バイト程度)と数が限られる。GPUなど特殊なプロセッサでは数万個(数百キロバイト)のレジスタを内蔵するものもある。
プログラムカウンタ
マイクロプロセッサ(MPU/CPU)内部でデータを保持するレジスタの一種で、次に実行すべき命令が格納されているメモリ上の番地(アドレス)を保存しているもの。また、その保存しているアドレス値。「PC」と略記されることもある。
アキュムレータ
論理演算や算術演算の結果を一時的に保持しておくためのものをアキュムレータと呼ぶ。
データレジスタ
演算結果を置いたり、データを一時的に記憶するレジスタである。プロセッサの内部バスにより演算装置とデータをやりとりできる。また、外部データバスとデータをやりとりできる。
アドレスレジスタ
メモリをアクセスする場合のアドレスを指定するときに用いるレジスタである。この内容を外部アドレスバスに出す事により、メインメモリからデータを読み出す。また、プロセッサによっては、アドレスを計算するための演算回路が付属しており、実効アドレスの計算を行なうことができるようになっていることもある。
インデックスレジスタ
アクセスしたいメモリ上の番地(アドレス)の、基準値からの相対的な値を格納するためのもの。汎用レジスタを転用することが多い。
ベースレジスタ
アクセスしたいメインメモリ上の番地(アドレス)の基準値や先頭位置を記憶しておくためのもの。
インデックスレジスタと組み合わせて使用する。
スタックポインタ
スタックと呼ばれるメモリ領域の現在の操作位置を保持するためのもの。
ステータスレジスタ (フラグレジスタ)
演算や処理の結果により一部が書き換えられるもの。条件分岐命令などがその内容を読み取って動作に反映させる。
命令レジスタ
プロセッサが命令を実行する際、プログラムカウンタ(PC:Program Counter)と呼ばれるレジスタの内容を参照し、メインメモリ上の現在の実行位置から命令を読み出す(フェッチ)。読み出された命令は命令レジスタに格納され、命令デコーダによりその内容が解析される(デコード)。解析された命令の内容に応じて必要なデータなどをレジスタやメインメモリから取り出し、処理を実行する。
制御レジスタ(コントロールレジスタ)
アーキテクチャによって実装のされ方が異なる。
制御レジスタは、CPUまたはその他のデジタルデバイスの一般的な動作を変更または制御するプロセッサレジスタです。制御レジスタによって実行される一般的なタスクには、割り込み制御、アドレッシングモードの切り替え、ページング制御、およびコプロセッサ制御が含まれます。
例外テーブルベースレジスタ
システムのブート時にオペレーティング・システムは例外テーブル (exception table) とよばれるジャンプ・テーブルを確保し、初期化する。このとき、テーブルのエントリkが例外kのハンドラのアドレスを保持するよう初期化が行われる。
実行時(システムが、あるプログラムを実行しているとき)において、プロセッサはイベントが起きたことを検出し、対応する例外の番号kを決定する。
プロセッサは例外を引き起こすために、間接プロシージャ呼び出しを行う。このとき呼び出されるプロシージャは、例外テーブルのエントリkを介して得られた、イベントに対応する例外ハンドラである。この例外テーブルには例外ハンドラのアドレスがまとめられている。
例外番号は例外テーブルのインデクスとして使われる。また、テーブルの開始アドレスはCPUの特別なレジスタによって指定される,このレジスタは,例外テーブル・ベース・レジスタ (exception table base register) とよばれる。