Home | History | Annotate | Download | only in x86-64
      1 Register Usage
      2 rax      temporary register; with variable arguments passes information
      3          about the number of SSE registers used; 1st return register
      4 
      5 rbx*     callee-saved register; optionally used as base pointer
      6 
      7 rcx      used to pass 4th integer argument to functions
      8 
      9 rdx      used to pass 3rd argument to functions 2nd return register
     10 
     11 rsp*     stack pointer
     12 
     13 rbp*     callee-saved register; optionally used as frame pointer
     14 
     15 rsi      used to pass 2nd argument to functions
     16 
     17 rdi      used to pass 1st argument to functions
     18 
     19 r8       used to pass 5th argument to functions
     20 
     21 r9       used to pass 6th argument to functions
     22 
     23 r10      temporary register, used for passing a function's static chain pointer
     24 
     25 r11      temporary register
     26 
     27 r12-15*  callee-saved registers
     28 
     29 xmm01   used to pass and return floating point arguments
     30 
     31 xmm27   used to pass floating point arguments
     32 
     33 xmm815  temporary registers
     34 
     35 mmx07   temporary registers
     36 
     37 st0      temporary register; used to return long double arguments
     38 
     39 st1      temporary registers; used to return long double arguments
     40 
     41 st27    temporary registers
     42 
     43 fs       Reserved for system use (as thread specific data register)
     44 
     45 	
     46 
     47 *) must be preserved across function calls
     48 
     49 Integer arguments from list: rdi,rsi,rdx,rcx,r8,r9,stack
     50 Floating point arguments from list: xmm0-xmm7