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.