Contents    Page-10    Prev    Next    Page+10    Index   

x86 Processor

We will assume an x86-64 processor. This processor has a vast number of instructions (some undocumented) and two major families of assembler syntax and calling sequence conventions. We will use the AT&T/Unix syntax and gcc calling conventions.

Integer registers can be used in several sizes, e.g. %eax (32 bits) and %rax (64 bits) are the same register in different sizes. We will assume that integer will use the 32-bit size, while memory addresses must use the 64-bit size.

General-purpose (Integer) Registers:
32/64 bits, numbered 0 - 15 in genasm. We will use them in the order %eax, %ecx, %edx, %ebx since %ebx is callee-saved. RBASE to RMAX is the local integer register range.

Floating Point Registers:
64 bits, numbered 16 - 31 in genasm. FBASE to FMAX is the floating register range. These are called %xmm0 through %xmm7.