※ 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(割込みハンドラのアドレスを保持するディスクリプタのテーブル)の先頭アドレスを格納 |