x86-64のレジスタ
汎用レジスタ
x86-64は、64ビットの汎用レジスタが以下の16本用意されている。
RAXレジスタ
RBXレジスタ
RCXレジスタ
RDXレジスタ
RSIレジスタ
RDIレジスタ
RBPレジスタ
RSPレジスタ
R8 〜 R15レジスタ
x86-64で追加された8本の汎用レジスタ
レジスタとビット幅
Intelの歴代CPUのレジスタ名は、レジスタのビット幅が変わるごとに以下のように変遷してきた。
8ビットCPU → Aレジスタ
16ビットCPU→ AXレジスタ
32ビットCPU → EAXレジスタ
64ビットCPU → RAXレジスタ
x86-64アーキテクチャは64ビットCPUなので上述した16本の64ビット汎用レジスタを持つが、後方互換性のため、64ビットレジスタの下位ビットを32ビットレジスタや16ビットレジスタとして利用することができる。例えば、32ビットなEAX レジスタへ値をセットすると、64ビットなRAX レジスタの下位32ビットにその値がセットされる。
以下は、x86-64アーキテクチャの汎用レジスタの一覧。32ビットおよび16ビットでアクセスする際の名前も併記している。また、各レジスタの名前の由来についても備考に記している。現在ではこれらのレジスタは汎用目的で使用されるため特定の用途に縛られることはないが、名前の由来を知ることでレジスタ名のイメージをつかみやすくなるはず。
table:x86-64汎用レジスタ
64ビットレジスタ 下位32ビット 下位16ビット 備考
RAX EAX AX 演算用のレジスタ(アキュムレータ)
RBX EBX BX 特定のメモリを指し示すポインタ(ベースレジスタ)
RCX ECX CX 繰り返し回数を数えるカウンタ(カウンレジスタ)
RDX EDX DX データの一時記憶用(データレジスタ)
RSI ESI SI メモリ操作のソース(ソースインデックス)
RDI EDI DI メモリ操作のデスティネーション(デスティネーションインデックス)
RBP EBP BP スタックフレームの基準点(ベースポインタ)
RSP ESP SP スタックポインタ
R8 R8D R8W (64ビットモードで追加)
... ... ... ...
R15 R15D R15W (64ビットモードで追加)
参考
Learn / Windows / Windows ドライバー / x64 アーキテクチャ
はじめて読む8086