Register usage

x86-64 has a much less claustrophobic 16 integer registers, as well as 16 SSE/SSE2 registers. It has the usual complement of 8 x87 registers, aliased with 8 MMX registers. The available x86-64 registers is summarized in Table 4.

Table 4: x86-64 register summary
    CALLEE
REGISTER USAGE SAVE
%rsp Stack pointer YES
%rbx optional base pointer YES
%rbp optional frame pointer YES
%rax integer return val NO
%rdi 1st int arg NO
%rsi 2nd int arg NO
%rdx 3rd int arg NO
%rcx 4th int arg NO
%r8 5th int arg NO
%r9 6th int arg NO
%r10 used to pass static chain pointer NO
%r11 scratch reg NO
%r12-15 callee-saved regs YES
%xmm0-1 pass & return fp args NO
%xmm2-7 pass fp args NO
%xmm8-15 scratch regs NO
%mmx0-7 scratch regs, aliased to fp stack NO
%st returns long double args NO
  aliased with mmx regs  
%st1-7 scratch regs, aliased with mmx NO


Clint Whaley 2012-07-10