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

汎用レジスター

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)
  • 現在実行中の命令のアドレスの保持