Newer
Older
ABI, according to http://www.x86-64.org/documentation/abi-0.99.pdf:
Up to 6 integer and pointer arguments are passed in registers. Nine
registers, %rax, %rcx, %rdx, %rsi, %rdi and %r8-%r11 can be used
freely. Integers and pointers are returned in %rax.
Registers May be Argument
clobbered number
%rax Y
%rbx
%rcx Y 4
%rdx Y 3
%rbp
%rsi Y 2
%rdi Y 1
%rsp (SP)
%r8 Y 5
%r9 Y 6
%r10 Y
%r11 Y
%r12
%r13
%r14
%r15
w64 ABI, according to
http://msdn.microsoft.com/en-us/library/9z1stfyw.aspx:
Registers May be Argument
clobbered number
%rax Y
%rbx
%rcx Y 1
%rdx Y 2
%rbp
%rsi
%rdi
%rsp (SP)
%r8 Y 3
%r9 Y 4
%r10 Y
%r11 Y
%r12
%r13
%r14
%r15
Additional arguments are passed on the stack. "backing store" on the
stack for the four register arguments is also required. %xmm6 and
%xmm7 are callee-saved. The "long" type is just 32 bits. Nettle
currently does *NOT* support this ABI.