The System V AMD64 ABI (Application Binary Interface) is the calling convention used on Unix-like operating systems for 64-bit x86 processors (x86-64 architecture). It defines how functions are called, how parameters are passed, how return values are handled, and how the stack is managed.
Key Aspects of System V AMD64 ABI
1. Register Usage
The System V AMD64 ABI designates specific registers for passing function arguments and returning values:
Integer and Pointer Arguments:
- The first six integer or pointer arguments are passed in registers
RDI,RSI,RDX,RCX,R8, andR9. - Additional arguments are passed on the stack.
Floating Point Arguments:
- Floating-point arguments are passed in registers
XMM0throughXMM7.
Return Values:
- Integer and Pointer Return Values:
- Single-value returns (up to 64 bits) are returned in
RAX. - For larger return values, the caller allocates space for a pointer in
RDI, which points to where the return value will be stored.
- Single-value returns (up to 64 bits) are returned in
- Floating Point Return Values:
- Floating-point return values are returned in
XMM0.
- Floating-point return values are returned in
2. Stack Frame
Stack Alignment:
- The stack pointer (
RSP) must be aligned to a 16-byte boundary at the point of function call.
Stack Management:
- The callee (the function being called) is responsible for preserving the base pointer (
RBP) if it uses it. - The callee allocates space for local variables on the stack.
- The caller is responsible for stack cleanup after the function call.
3. Function Calling
Parameter Passing:
- Integer and pointer arguments are typically passed in registers.
- Additional arguments beyond the first six are passed on the stack.
Return Address:
- The return address is automatically pushed onto the stack by the
callinstruction.
Stack Cleanup:
- The caller cleans up the stack after the function call by adjusting
RSPto remove arguments passed on the stack.

Join the discussion
Sign in with your account to post comments, reply to others, and participate in the conversation.
Login to Comment