Когда аргументы помещаются в стек, C делает это справа налево. Однако, в зависимости от архитектуры и количества параметров, возможно, что стек не будет использоваться (или использоваться только частично), и вместо него будут использоваться регистры.
Ради аргумента скажем, что мы имеем дело с архитектурой x86 (32-битной). Кадр стека будет выглядеть как ...
(Stack grows down. High stack address is here)
arg3
arg2
arg1
ret addr <--- Auto pushed by 'call'
old base ptr <--- Called function typically saves the old base ptr
... <--- Carve space for local variables
(Low stack address is here.)
Продолжая приведенный выше пример, вызываемая функция может получить доступ к параметрам, используя следующее ...
movl 8(%ebp), %eax // move arg1 into EAX
movl 12(%ebp), %edx // move arg2 into EDX
и т. Д.
Если я правильно помню, в PowerPC есть что-то вроде восьми (8) регистров, доступных для передачи параметров - r3 ... r10 включительно. Что касается других архитектур, вам придется их искать.
Надеюсь, это поможет.