x86 64_レジスタ一覧表 - GawinGowin/libasm GitHub Wiki
x86-64 レジスタ一覧表
このドキュメントは、x86-64アーキテクチャで使用される各種レジスタの名前、意味、用途を網羅的にまとめたものです。
汎用レジスタ (General Purpose Registers)
64ビット汎用レジスタ
レジスタ名 |
意味・由来 |
主な用途 |
System V ABI での役割 |
RAX |
Accumulator |
累積演算、戻り値 |
整数/ポインタ戻り値 |
RBX |
Base |
ベースアドレス |
被呼び出し側保存 |
RCX |
Counter |
ループカウンタ |
第4引数 |
RDX |
Data |
データ演算、拡張演算 |
第3引数 |
RSI |
Source Index |
文字列操作の送信元 |
第2引数 |
RDI |
Destination Index |
文字列操作の送信先 |
第1引数 |
RBP |
Base Pointer |
スタックフレームの基点 |
被呼び出し側保存 |
RSP |
Stack Pointer |
スタックの最上位 |
スタックポインタ |
R8 |
Extended Register 8 |
汎用レジスタ |
第5引数 |
R9 |
Extended Register 9 |
汎用レジスタ |
第6引数 |
R10 |
Extended Register 10 |
汎用レジスタ |
呼び出し側保存 |
R11 |
Extended Register 11 |
汎用レジスタ |
呼び出し側保存 |
R12 |
Extended Register 12 |
汎用レジスタ |
被呼び出し側保存 |
R13 |
Extended Register 13 |
汎用レジスタ |
被呼び出し側保存 |
R14 |
Extended Register 14 |
汎用レジスタ |
被呼び出し側保存 |
R15 |
Extended Register 15 |
汎用レジスタ |
被呼び出し側保存 |
レジスタのサブセット
64ビット |
32ビット |
16ビット |
8ビット上位 |
8ビット下位 |
用途例 |
RAX |
EAX |
AX |
AH |
AL |
戻り値、累積演算 |
RBX |
EBX |
BX |
BH |
BL |
ベースアドレス |
RCX |
ECX |
CX |
CH |
CL |
ループカウンタ |
RDX |
EDX |
DX |
DH |
DL |
データ演算 |
RSI |
ESI |
SI |
- |
SIL |
文字列送信元 |
RDI |
EDI |
DI |
- |
DIL |
文字列送信先 |
RBP |
EBP |
BP |
- |
BPL |
スタックフレーム |
RSP |
ESP |
SP |
- |
SPL |
スタックポインタ |
インデックス・ポインタレジスタ
レジスタ名 |
意味 |
主な用途 |
RIP |
Instruction Pointer |
次に実行する命令のアドレス |
RFLAGS |
Flags |
演算結果フラグや制御フラグ |
セグメントレジスタ
レジスタ名 |
意味 |
用途 |
CS |
Code Segment |
コードセグメント |
DS |
Data Segment |
データセグメント |
ES |
Extra Segment |
追加セグメント |
FS |
F Segment |
特殊用途セグメント |
GS |
G Segment |
特殊用途セグメント |
SS |
Stack Segment |
スタックセグメント |
SSE/AVX レジスタ
128ビット XMM レジスタ
レジスタ名 |
System V ABI での役割 |
用途 |
XMM0 |
浮動小数点戻り値/第1引数 |
SIMD演算、浮動小数点 |
XMM1 |
第2浮動小数点引数 |
SIMD演算、浮動小数点 |
XMM2 |
第3浮動小数点引数 |
SIMD演算、浮動小数点 |
XMM3 |
第4浮動小数点引数 |
SIMD演算、浮動小数点 |
XMM4 |
第5浮動小数点引数 |
SIMD演算、浮動小数点 |
XMM5 |
第6浮動小数点引数 |
SIMD演算、浮動小数点 |
XMM6 |
第7浮動小数点引数 |
SIMD演算、浮動小数点 |
XMM7 |
第8浮動小数点引数 |
SIMD演算、浮動小数点 |
XMM8-XMM15 |
呼び出し側保存 |
SIMD演算、浮動小数点 |
256ビット YMM レジスタ (AVX)
レジスタ名 |
関係 |
用途 |
YMM0-YMM15 |
XMM0-XMM15の下位128ビット |
256ビットSIMD演算 |
512ビット ZMM レジスタ (AVX-512)
レジスタ名 |
関係 |
用途 |
ZMM0-ZMM31 |
YMM0-YMM31の下位256ビット |
512ビットSIMD演算 |
制御レジスタ
レジスタ名 |
意味 |
用途 |
CR0 |
Control Register 0 |
プロセッサ制御フラグ |
CR2 |
Control Register 2 |
ページフォルト時のアドレス |
CR3 |
Control Register 3 |
ページディレクトリベース |
CR4 |
Control Register 4 |
プロセッサ拡張機能制御 |
CR8 |
Control Register 8 |
タスク優先度レジスタ |
デバッグレジスタ
レジスタ名 |
用途 |
DR0-DR3 |
デバッグアドレスレジスタ |
DR6 |
デバッグステータスレジスタ |
DR7 |
デバッグ制御レジスタ |
モデル固有レジスタ (MSR)
レジスタ名 |
用途 |
EFER |
拡張機能有効レジスタ |
STAR |
システムコール対象アドレス |
LSTAR |
64ビットモードシステムコール |
CSTAR |
互換モードシステムコール |
System V ABI 呼び出し規約まとめ
整数・ポインタ引数の順序
- RDI (第1引数)
- RSI (第2引数)
- RDX (第3引数)
- RCX (第4引数)
- R8 (第5引数)
- R9 (第6引数)
- スタック (第7引数以降)
浮動小数点引数の順序
- XMM0 (第1引数)
- XMM1 (第2引数)
- XMM2 (第3引数)
- XMM3 (第4引数)
- XMM4 (第5引数)
- XMM5 (第6引数)
- XMM6 (第7引数)
- XMM7 (第8引数)
戻り値
- RAX: 整数・ポインタ戻り値
- XMM0: 浮動小数点戻り値
レジスタ保存責任
呼び出し側保存 (Caller-saved)
- RAX, RCX, RDX, RSI, RDI, R8, R9, R10, R11
- XMM0-XMM15
被呼び出し側保存 (Callee-saved)
- RBX, RBP, R12, R13, R14, R15
- RSP (スタックポインタ)
フラグレジスタ (RFLAGS) の主要ビット
ビット |
フラグ名 |
意味 |
0 |
CF |
キャリーフラグ |
2 |
PF |
パリティフラグ |
4 |
AF |
補助キャリーフラグ |
6 |
ZF |
ゼロフラグ |
7 |
SF |
サインフラグ |
8 |
TF |
トラップフラグ |
9 |
IF |
割り込み許可フラグ |
10 |
DF |
方向フラグ |
11 |
OF |
オーバーフローフラグ |