レジスタ

1. レジスタとは

レジスタとは、0か1の値を保存する箱の事です。
その箱は32bitパソコンであれば、32個を1単位として、一つ一つに名称がついています。
(当然64bitであれば64個が一つの単位になります)
イメージ図としては、以下のような箱のひとつひとつに『0』 か 『1』の状態が保存加能です。
64bit のPCであれば、64bitの『レジスタ』が複数用意されています。

register image

2. レジスタの種類

レジスタは目的と過去の経緯に応じて名前がついています(x64系の汎用レジスタ)。
以下ではアキュムレータレジスタのイメージを紹介します。

RAX

RAXは64bit、EAXは32bit、 AXは16bit、AHは8bit(上位)、ALは8bit(下位)を指定します。
AHとALをくっつけて利用しているのがAXです。
更にAXに16bitを追加して32bitの箱として利用するのが、EAXとなります。
RAX以外の汎用レジスタを整理すると以下の様になります。

レジスタ名称 個別略称
アキュームレジスタ RAX/EAX/AX/AH/AL
ベースレジスタ RBX/EBX/BX/BH/BL
カウンタレジスタ RCX/ECX/CX/CH/CL
データレジスタ RDX/EDX/DX/DH/DL
スタックポインターレジスタ RSP/ESP/SP
スタックベースポインタレジスタ RBP/EBP/BP
ソースレジスタ RSI/ESI/SI
ディスティネーションレジスタ RDI/EDI/DI

x64として64bit対応になった際に、32bit版のレジスタに加えて複数のレジスタが追加されました。
R8、R9、R10、R11、R12、R13、R15となります。他のレジスタと同様にR8D(32bit)、R8W(16bit)、R8B(8bit)が存在します。
なお、Quad Word(64bit)、Double Word(32bit)、Word(16bit)、Byte(8bit)と呼ばれています。
以下にRAX以外のイメージ図を示します。

間にR9、R10、R11、R12、R13、R14が存在しています。

3. フラグレジスタ

上記の汎用レジスタ以外にフラグレジスタが存在します。 フラグレジスタとは32bitの1つのレジスタの1bitづつに意味を持たせたレジスタです。 現在のところ16bit利用していますが、あいているbitを使う可能性もあります。

フラグ名称
IDフラグ
仮想割り込み保留フラグ
仮想割り込みフラグ
アライメント・チェック・フラグ
仮想 8086 モードフラグ
再開フラグ
ネスト・タスク・フラグ
I/O 特権レベル・フィールド
トラップフラグ
割り込み可能フラグ
オーバーフロー・フラグ
符号フラグ
ゼロフラグ
調整フラグ
パリティフラグ
キャリーフラグ

汎用レジスタ、フラグレジスタ以外にもレジスタは存在します。 例えば、XMM0 から XMM15は、127bitが設定可能なレジスタとなります。