| 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 |
| |
| xmm01 used to pass and return floating point arguments |
| |
| xmm27 used to pass floating point arguments |
| |
| xmm815 temporary registers |
| |
| mmx07 temporary registers |
| |
| st0 temporary register; used to return long double arguments |
| |
| st1 temporary registers; used to return long double arguments |
| |
| st27 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 |