X86

提供: Wikinote
2009年4月23日 (木) 22:23時点におけるHagio (トーク | 投稿記録)による版

移動: 案内検索

そのうちアセンブリ言語も読まなきゃならなくなりそうなので。

参考文献

レジスタ

汎用レジスタ

これらは 32 ビットである。'E' を省いたものが下位 16 ビットを示す。 また、A - D までは、?L で下位 0-7 ビット、?H で 下位 8-15 ビットを示す。

  • EAX — Accumulator for operands and results data
  • EBX — Pointer to data in the DS segment
  • ECX — Counter for string and loop operations
  • EDX — I/O pointer
  • ESI — Pointer to data in the segment pointed to by the DS register; source pointer for string operations
  • EDI — Pointer to data (or destination) in the segment pointed to by the ES register; destination pointer for string operations
  • ESP — Stack pointer (in the SS segment)
  • EBP — Pointer to data on the stack (in the SS segment)

64 ビットモード

64 ビットモードでは、以下の 16 個の汎用レジスタが利用できる。 これらはそれぞれ、32 ビットでアクセスすることも可能だ。

64 ビット
RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8 - R15
32 ビット
EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, R8D - R15D

セグメントレジスタ

すべて 16 ビット幅である。

  • CS — Code segment register
  • DS, ES, FS, GS — Data segment register
  • SS — Stack segment register

フラグレジスタ

EFLAGS
32 ビット幅で、プロセッサ初期化後の値は 0x00000002 となる。

ステータスフラグ

  • CF (bit 0) — Carry flag
  • PF (bit 2) — Parity flag
  • AF (bit 4) — Adjust flag
  • ZF (bit 6) — Zero flag
  • SF (bit 7) — Sign flag
  • OF (bit 11) — Overflow flag

フラグは多すぎて面倒なのでまたやる気が出たら…

命令ポインタ

EIP (RIP)
32 ビット幅 (64 ビット幅)