От: http://en.wikipedia.org/wiki/X86_calling_conventions
push c
push b
push a
call function_name
add esp, 12 ;Stack clearing
mov x, eax
Почему нам нужно явно добавить 12 в ESP для очистки стека, поскольку вызываемая функция должна была вытолкнуть параметры из стека, восстанавливая указатель стека ...?
Другой вопрос:
Теоретически, было бы возможно реализовать функции переменных параметров, когда вызываемый абонент позаботится о праве очистки (например, если вы передадите количество аргументов в стеке в регистре)?