Marco ebp, esp y stack en conjunto con nasm.

Tengo algunas preguntas sobre ebp, esp y el marco de pila en el siguiente código.

¿Por qué restamos 28 de esp? Tenemos dos variables locales x e y en main. Entonces, ¿por qué no restamos 8?

¿Y no ponemos valores para apilar de derecha a izquierda? Entonces, ¿por qué agregamos 1 a [eax + 8] en lugar de [eax + 4]?

Estoy un poco confundido acerca de esta estructura. ¿Me puedes ayudar? Gracias.

func(int a, int b, int c)
{
  return a+b+c;
}
main()
{
 int x, y=3;
 x=func(y,2,1);
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta