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 呼び出し規約まとめ

整数・ポインタ引数の順序

  1. RDI (第1引数)
  2. RSI (第2引数)
  3. RDX (第3引数)
  4. RCX (第4引数)
  5. R8 (第5引数)
  6. R9 (第6引数)
  7. スタック (第7引数以降)

浮動小数点引数の順序

  1. XMM0 (第1引数)
  2. XMM1 (第2引数)
  3. XMM2 (第3引数)
  4. XMM3 (第4引数)
  5. XMM4 (第5引数)
  6. XMM5 (第6引数)
  7. XMM6 (第7引数)
  8. 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 オーバーフローフラグ