※ x86 (Intel 8086 or 後方互換性のある後続) アーキテクチャの CPU

参考:https://wiki.osdev.org/CPU_Registers_x86-64#Protected_Mode_Registers

レジスタの種類と役割

汎用レジスタ

役割が規定されているが、汎用的に利用できる。

記号 名称 主な役割
EAX/AX/AH/AL アキュムレータ 演算結果の格納
ECX/CX/CH/CL カウントレジスタ ループのカウンタや文字列のポインタ
EDX/DX/DH/DL データレジスタ データ演算・I/O 操作
EBX/BX/BH/BL ベースレジスタ DS のデータへのポインタ
ESI/SI ソースインデックス ストリーム操作においてデータの転送元アドレスを指す
EDI/DI デスティネーションインデックス ストリーム操作においてデータの転送先アドレスを指す
EBP/BP ベースポインタ スタックのベースを指す
ESP/SP スタックポインタ スタックのトップを指す
  • EAX/AX/AH/AL(CX, DX, BX も同様):
    • AX: 16ビットレジスタ
    • AH/AL: 8ビットレジスタ。実態は AX の上位ビット/下位ビット
    • EAX: 32ビットレジスタ。下位ビットが AX。上位ビットだけを指す名称は存在しない
 /              EAX               \
+----------------+--------+--------+
|                |   AH   |   AL   |
+----------------+--------+--------+
                  \       AX      /
  • ESI/SI(DI, BP, SP も同様):
    • SI: 16ビットレジスタ
    • ESI: 32ビットレジスタ。下位ビットが SI
 /              ESI              \
+----------------+----------------+
|                |       SI       |
+----------------+----------------+

セグメントレジスタ

記号 名称 役割
CS コードセグメント コードへのポインタ
SS スタックセグメント スタックへのポインタ
DS データセグメント データへのポインタ
ES エクストラセグメント 追加のデータへのポインタ(E: Extra)
FS Fセグメント 追加のデータへのポインタその2(F: E の次)
GS Gセグメント 追加のデータへのポインタその3(G: F の次)

命令ポインタ

記号 名称 役割
IP 命令ポインタ (分岐が起きない前提で)次に実行する命令のアドレスを指す

フラグレジスタ

プロテクトモードレジスタ

記号 名称 役割
GDTR グローバルディスクリプタテーブルレジスタ GDT(セグメントの開始位置・大きさ・アクセス制限のメタ情報テーブル)の先頭アドレスを格納
IDTR 割込みディスクリプタテーブルレジスタ IDT(割込みハンドラのアドレスを保持するディスクリプタのテーブル)の先頭アドレスを格納