Skip to content
Snippets Groups Projects
README 940 B
Newer Older
  • Learn to ignore specific revisions
  • Niels Möller's avatar
    Niels Möller committed
    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
    
    Niels Möller's avatar
    Niels Möller committed
    registers, %rax, %rcx, %rdx, %rsi, %rdi and %r8-%r11 can be used
    
    Niels Möller's avatar
    Niels Möller committed
    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.