Register Usage rax temporary register; with variable arguments passes information about the number of SSE registers used; 1st return register rbx* callee-saved register; optionally used as base pointer rcx used to pass 4th integer argument to functions rdx used to pass 3rd argument to functions 2nd return register rsp* stack pointer rbp* callee-saved register; optionally used as frame pointer rsi used to pass 2nd argument to functions rdi used to pass 1st argument to functions r8 used to pass 5th argument to functions r9 used to pass 6th argument to functions r10 temporary register, used for passing a function's static chain pointer r11 temporary register r12-15* callee-saved registers xmm0­1 used to pass and return floating point arguments xmm2­7 used to pass floating point arguments xmm8­15 temporary registers mmx0­7 temporary registers st0 temporary register; used to return long double arguments st1 temporary registers; used to return long double arguments st2­7 temporary registers fs Reserved for system use (as thread specific data register) *) must be preserved across function calls Integer arguments from list: rdi,rsi,rdx,rcx,r8,r9,stack Floating point arguments from list: xmm0-xmm7