Here is some basic documentation for the calling convention on aarch64 (arm64) systems.
Integer and Pointer Parameters
For integer and pointer function parameters, The first 8 parameters are passed via the x0
- x7
registers. All additional parameters are passed on the stack.
Floating-Point and SIMD Parameters
For float-point and SIMD function parameters, the first 8 parameters are passed in using the v0
- v7
registers. Any additional parameters are passed on the stack.
Return Values
Function return values are stored in x0
(and x1
for 128-bit return values) for integer/pointer return values and in v0
(and v1
for larger types) for floating-point return types.