The Intel and AMD CPUs operating in 64 bit mode have 16 general purpose registers. Each register holds 64 bits and can be manipulated as 64, 32, 16 and 8 bit quantities. There are 8 registers which are descendents of the original 8086 registers and 8 more which were added when AMD extended the instruction set to 64 bits
Register | 32 bit | 16 bits | 8 bits | Comments |
---|---|---|---|---|
rax | eax | ax | ah, al | general purpose, special for some instructions |
rbx | ebx | bx | bh, bl | general purpose |
rcx | ecx | cx | ch, cl | general purpose |
rdx | edx | dx | dh, dl | general purpose |
rdi | edi | di | dil | general purpose, destination index |
rsi | esi | si | sil | general purpose, source index |
rbp | ebp | bp | bpl | frame base pointer |
rsp | esp | sp | spl | stack pointer |
r8 | r8d | r8w | r8b | general purpose |
r9 | r9d | r9w | r9b | general purpose |
r10 | r10d | r10w | r10b | general purpose |
r11 | r11d | r11w | r11b | general purpose |
r12 | r12d | r12w | r12b | general purpose |
r13 | r13d | r13w | r13b | general purpose |
r14 | r14d | r14w | r14b | general purpose |
r15 | r15d | r15w | r15b | general purpose |
The instruction pointer register is named rip
, though it is not
commonly referred to directly in code.
There are 2 sets of floating point registers.
The old style of registers is a stack with registers ST0-ST7
.
The recommended set of 16 registers in 64 bit mode are named
XMM0-XMM15
.
These registers are 128 bit registers which can me used in a variety of
SIMD instructions.
Some newer CPUs have extended these registers to 256 bits with new
names YMM0-YMM15