as: i386-Regs
9.15.5 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 5 processor control registers '%cr0', '%cr2', '%cr3', '%cr4',
and '%cr8'.
* 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 128-bit 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 128-bit SSE registers: '%xmm8'-'%xmm15'.
With the AVX extensions more registers were made available:
* the 16 256-bit SSE '%ymm0'-'%ymm15' (only the first 8 available in
32-bit mode). The bottom 128 bits are overlaid with the
'xmm0'-'xmm15' registers.
The AVX2 extensions made in 64-bit mode more registers available:
* the 16 128-bit registers '%xmm16'-'%xmm31' and the 16 256-bit
registers '%ymm16'-'%ymm31'.
The AVX512 extensions added the following registers:
* the 32 512-bit registers '%zmm0'-'%zmm31' (only the first 8
available in 32-bit mode). The bottom 128 bits are overlaid with
the '%xmm0'-'%xmm31' registers and the first 256 bits are overlaid
with the '%ymm0'-'%ymm31' registers.
* the 8 mask registers '%k0'-'%k7'.