CPUに役立っているレジスタの種類を知る

勉強のきっかけになった問題

CPUのスタックポインタが示すものはどれか。

ア. サブルーチン呼出し時に,戻り先アドレス及びレジスタの内容を
  格納するメモリのアドレス
イ. 次に読み出す機械語命令が格納されているアドレス
ウ. メモリから読み出された機械語命令
エ. 割込みの許可状態,及び条件分岐の判断に必要な演算結果の状態
平成24年秋期問10 スタックポインタが示すもの|応用情報技術者試験.com

CPUとは、パソコンの脳みそです。

省略しないと、Central Processing Unitです。
日本語で言うと、中央演算装置です。
マイクロプロセッサに半導体チップとして入っていて、計算処理なんかをしてくれるパソコンの脳みそです。

CPUの種類はパソコンで見るとこんな感じで表示されています。
f:id:ponsuke_tarou:20171001191331p:plain

マイクロプロセッサの見た目はこんな感じ。

https://shop-media.intel.com/api/v2/helperservice/getimage?url=http://images.icecat.biz/img/gallery/23221218_49.jpg&height=550&width=550
www.intel.com

レジスタとは、CPUが計算する時に使う記憶装置です。

CPUに入っている記憶装置のことです。計算に使うデータや計算結果、次にやることの情報などCPUのためになることを覚えています。
CPUのために速攻でデータを授受してくれまが、あんまりたくさん覚えることができません。なので、用途に応じて担当を決めています。

http://itpro.nikkeibp.co.jp/article/COLUMN/20070404/267385/zu03.jpg
itpro.nikkeibp.co.jp

プログラムカウンタは、次にやることが書いてあるメモリの場所を記憶するレジスタです。

略してPCです。プログラムレジスタ(PR)とか命令ポインタ(IP)とも言うらしいです。

CPU内にあるアドレス(番地)を収める場所で、そのCPUが次に実行する命令が置かれている番地が書かれています。ある番地の命令を実行した後、次はどこの番地にある命令を実行したらよいのか、その答えを示しているのがプログラムカウンタです。
https://www.renesas.com/ja-jp/media/support/technical-resources/engineer-school/mcu-programming-peripherals-06/img_01.jpg
www.renesas.com

スタックポインタは、次に使えるメモリにあるスタックの番地を記憶するレジスタです。

OSがプログラムをロードすると,メモリ上に「スタック」と呼ばれるデータ領域が割り当てられる。アセンブラでは,主に汎用レジスタの値を一時的に退避する目的でスタックが使われる。スタックの最上段のアドレスを保持するのがSPだ
http://itpro.nikkeibp.co.jp/article/COLUMN/20070404/267385/zu05.jpg
itpro.nikkeibp.co.jp

そもそもスタックとは、メモリ上にある一時的な置き場です。

コンピュータで用いられる基本的なデータ構造の1つで、データを後入れ先出し(LIFO: Last In First Out; FILO: First In Last Out)の構造で保持するものである。
https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Stack-sv.png/200px-Stack-sv.png
スタック - Wikipedia

割り込み要求が発生した場合、割り込みが発生する直前まで実行していたプログラムのフラグやPCの値を一時的に退避する場所
CPUの全体構成:スタックとスタックポインタ | 東芝 半導体&ストレージ製品

メモリ上の領域の一つであり注3,プログラム実行時の作業領域として使用します.スタック領域は,コード領域やデータ領域,ヒープ領域と同じように,メモリ上に領域を排他的に(ほかの領域とは重なり合わないように)確保しています.
http://www.kumikomi.net/archives/2008/07/15stack/zu04_01.gif
www.kumikomi.net

命令レジスタは、実行中の処理を記憶するレジスタです。

インストラクションレジスタ(IR)とも言うらしいです。
プログラムカウンタから次にやることが書いてあるメモリの場所を取得して、やることをメモリから読み出して記憶します。

主記憶から読み出された命令が格納される。この内容が命令デコーダ(命令解読器)で解読される。
http://ofmlsty.zashiki.com/magenju/terakoya/2syu_p/img/CPU_kihon.GIF
コンピュータの動作原理|コンピュータの仕組み|第二種 午前 まるごと要点|寺子屋|魔幻樹

取り出した命令を一時的に記憶しておくレジスタ。IRなどとも呼ばれる。
http://userdisk.webry.biglobe.ne.jp/013/235/62/N000/000/000/ALU.JPG
s.webry.info

メモリからやることを読み出すことをフェッチと言います。
メモリからフェッチしたやることを解析することをデコードと言います。

ステータスレジスタは、計算処理中に桁あふれを起こしたとか計算結果が0になったとか処理の状態を記憶するスレジスタです。

フラグレジスタとも言うらしいです。
決まったビット数の塊で、割込みOKだよとかエラーになったよとか計算結果がこうなったよとかをビットの値を変更することで記憶します。

演算,比較,およびデータの読み書きを行った結果が,自動的に設定される。
http://itpro.nikkeibp.co.jp/article/COLUMN/20070404/267385/zu06.jpg
itpro.nikkeibp.co.jp

CPUが演算命令を実行すると,指定されたデータ(汎用レジスタやメモリに置かれる場合が多い)をALUに送って演算を行い,結果を指定された記憶場所(汎用レジスタやメモリ)に保存します.このとき,演算結果が持つ特徴を,フラグ・レジスタ(またはステータス・レジスタ)と呼ばれる特別なレジスタに書き込みます
http://www.kumikomi.net/archives/2009/11/ep57hwsw/ep57hwsw_f05b.jpg
www.kumikomi.net