ARM > Efficient C for ARM > Function Calls

by David Thomas on

Function Calls

First four arguments to a function are passed in R0-R3.

The remainder of the arguments are passed on the stack.

  • Therefore, functions taking four or fewer arguments avoid the stack, which allows for greater efficiency.

Almost always more efficient to group subsequent args together and pass them together as a struct.


This is from section 5.5 of ARM System Developer’s Guide.

long long / double use two registers.

The benefit is not on the callee side, but on the caller side where it will have to perform fewer register setups and less register rearrangement.