SLAA534A June 2013 – June 2020
Any arguments not passed in registers are placed on the stack at increasing addresses, starting at 0(SP). Each argument is placed at the next available address correctly aligned for its type, subject to the following additional considerations:
For a variadic C function (that is, a function declared with an ellipsis indicating that it is called with varying numbers of arguments), the last explicitly declared argument and all remaining arguments are passed on the stack, so that its stack address can act as a reference for accessing the undeclared arguments.
Undeclared scalar arguments to a variadic function that are smaller than int are promoted to and passed as int, in accordance with the C language.
Alignment "holes" can occur between arguments passed on the stack, but "back-fill" does not occur.