When a function call is made in C, the arguments are passed in the reverse order. This is important so that we have access to the first argument. And this some how supports varargs. I don't understand that even if you have access to the first argument, you would still need to know how many arguments the function has, otherwise you might easily slip past the last argument and start considering invalid values as arguments.
And if the argument count is required, then there is no point in passing arguments in the reverse order because you can access the first argument with (sp - 2 * number_of_arguments, sp = stack pointer.
Passing arguments in the reverse order is also supposed to help recursive calls, I don't understand how.
Thank you in advance.