9.15.6 Register Naming
Register operands are always prefixed with `%'. The 80386 registers
consist of
- the 8 32-bit registers `%eax' (the accumulator), `%ebx',
`%ecx', `%edx', `%edi', `%esi', `%ebp' (the
frame pointer), and `%esp' (the stack pointer).
- the 8 16-bit low-ends of these: `%ax', `%bx', `%cx',
`%dx', `%di', `%si', `%bp', and `%sp'.
- the 8 8-bit registers: `%ah', `%al', `%bh',
`%bl', `%ch', `%cl', `%dh', and `%dl' (These
are the high-bytes and low-bytes of `%ax', `%bx',
`%cx', and `%dx')
- the 6 section registers `%cs' (code section), `%ds'
(data section), `%ss' (stack section), `%es', `%fs',
and `%gs'.
- the 3 processor control registers `%cr0', `%cr2', and
`%cr3'.
- the 6 debug registers `%db0', `%db1', `%db2',
`%db3', `%db6', and `%db7'.
- the 2 test registers `%tr6' and `%tr7'.
- the 8 floating point register stack `%st' or equivalently
`%st(0)', `%st(1)', `%st(2)', `%st(3)',
`%st(4)', `%st(5)', `%st(6)', and `%st(7)'.
These registers are overloaded by 8 MMX registers `%mm0',
`%mm1', `%mm2', `%mm3', `%mm4', `%mm5',
`%mm6' and `%mm7'.
- the 8 SSE registers registers `%xmm0', `%xmm1', `%xmm2',
`%xmm3', `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
The AMD x86-64 architecture extends the register set by:
- enhancing the 8 32-bit registers to 64-bit: `%rax' (the
accumulator), `%rbx', `%rcx', `%rdx', `%rdi',
`%rsi', `%rbp' (the frame pointer), `%rsp' (the stack
pointer)
- the 8 extended registers `%r8'–`%r15'.
- the 8 32-bit low ends of the extended registers: `%r8d'–`%r15d'
- the 8 16-bit low ends of the extended registers: `%r8w'–`%r15w'
- the 8 8-bit low ends of the extended registers: `%r8b'–`%r15b'
- the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
- the 8 debug registers: `%db8'–`%db15'.
- the 8 SSE registers: `%xmm8'–`%xmm15'.