%rax |
Temporary register; with variable arguments passes information about the number of vector registers used; 1st return register |
No |
%rbx |
Callee-saved register; optionally used as base pointer |
Yes |
%rcx |
Used to pass 4th integer argument to functions |
No |
%rdx |
Used to pass 3rd argument to functions; 2nd return register |
No |
%rsp |
Stack pointer |
Yes |
%rbp |
Callee-saved register; optionally used as frame pointer |
Yes |
%rsi |
Used to pass 2nd argument to functions |
No |
%rdi |
Used to pass 1st argument to functions |
No |
%r8 |
Used to pass 5th argument to functions |
No |
%r9 |
Used to pass 6th argument to functions |
No |
%r10 |
Temporary register, used for passing a function’s static chain pointer |
No |
%r11 |
Temporary register |
No |
%r12–%r15 |
Callee-saved registers |
Yes |
%xmm0–%xmm1 |
Used to pass and return floating point arguments |
No |
%xmm2–%xmm7 |
Used to pass floating point arguments |
No |
%xmm8–%xmm15 |
Temporary registers |
No |
%mmx0–%mmx7 |
Temporary registers |
No |
%st0, %st1 |
Temporary registers; used to return long double arguments |
No |
%st2–%st7 |
Temporary registers |
No |
%fs |
Reserved for system (as thread specific data register) |
No |
mxcsr |
SSE2 control and status word |
Partial |
x87 SW |
x87 status word |
No |
x87 CW |
x87 control word |
Yes |