メインコンテンツまでスキップ

汎用レジスター

x86

名称主な用途
EAX (Accumulator Register)
  • 関数呼び出しの戻り値の格納
  • 算術演算結果の格納
  • システム コール番号の指定
EBX (Base Register)
ECX (Count Register)
  • thiscall や clrcall などの呼び出し規約における this ポインターの格納先
  • ループ カウンタ
  • ストリング操作命令 (REP MOVS, REP STOS など) での要素数の指定
  • シフト操作のビット数指定
  • 繰り返し命令 (LOOP, LOOPZ, LOOPNZ など) におけるカウントの指定
EDX (Data Register)
ESI (Source Index Register)
  • ストリング操作命令 (REP MOVS, REP LODS など) でのソース アドレスの指定
EDI (Destination Index Register)
  • ストリング操作命令 (REP MOVS, REP STOS など) での宛先アドレスの指定
EBP (Base Pointer Register)
  • スタック フレームのベース アドレスの保持
  • ローカル変数と引数へのアクセス
ESP (Stack Pointer Register)
  • スタックのトップ アドレスの保持
  • スタック操作 (PUSH, POP, CALL, RET など)
EIP (Instruction Pointer Register)
  • 現在実行中の命令のアドレス

x64

名称主な用途
RAX
  • EAX と同様
RBX
  • EBX と同様
RCX
  • ECX と同様
  • 関数の第 1 引数 (整数型およびポインタ型)
RDX
  • EDX と同様
  • 関数の第 2 引数 (整数型およびポインタ型)
RSI
  • ESI と同様
RDI
  • EDI と同様
RBP
  • EBP と同様
RSP
  • ESP と同様
RIP
  • EIP と同様
R8
  • 関数の第 3 引数 (整数型およびポインタ型)
R9
  • 関数の第 4 引数 (整数型およびポインタ型)

データ型

  • Byte: 8 bits. AL, BL, CL, AH, BH, CH, ...
  • Word: 16 bits. AX, BX, CX, ...
  • Double word: 32 bits. EAX, EBX, ECX, ...
  • Quad word: 64 bits. RAX, RBX, RCX, ... for x64. In x86, it can combine two registers, usually EDX:EAX.

ARM64

名称主な用途
X0-X7
  • 関数の引数や戻り値の格納
X29 (FP: Frame Pointer)
  • スタック フレームのベース アドレスの保持
X30 (LR: Link Register)
  • 関数のリターン アドレスの保持
SP (Stack Pointer)
  • スタックのトップ アドレスの保持
PC (Program Counter)
  • 現在実行中の命令のアドレスの保持