レジスタのまとめ

64bit/32bitCPUのレジスタまとめ
参考書籍 : デバッガによるx86プログラム解析入門【x64対応版】、コンピュータハイジャッキング


・汎用レジスタ(32bitCPU)
EAX, EBX, ECX, EDX, ESI, EDIが汎用レジスタとして定義されている。
32bitを利用する場合はEAXで、16bitの場合はAXで、上位8bitはAH、下位8bitはALで使用する。
E*Xレジスタは本来用途が定められていた(EAXは演算用など)が、用途に制限されず汎用的に使用できる。


・特殊レジスタ(32bitCPU)
ESP, EBP, EIP, (CS, DS)
ESPはスタックポインタとも呼ばれており、スタックの最上位のアドレスを示す。
EBPはベースポインタと呼ばれ、スタックの基底アドレスを示す。
EIPはインストラクションポインタと呼ばれ、次に実行される命令のアドレスを示す。



・64bitCPUのレジスタ
64bitの汎用レジスタを使用するには、RAXのように、"E"AXを"R"AXに変えて使用する。
64bitの汎用レジスタは、RAX, RBX, RCX, RDX, RSI, RDI, R8, R9, R10, R11, R12, R13, R14, R15がある。
特殊レジスタは、RSP, RBP, RDIがある。
64bitCPUでも、32bit分だけを使用する場合はEAXで使用できる。


・フラグ
EFLAGSレジスタに演算結果が1か0で格納される。
EFLAGSレジスタにはステータスフラグが含まれており、主に
 ZF(ゼロフラグ)
 SF(サインフラグ)
 CF(キャリーフラグ)
 OF(オーバーフローフラグ)
がある。