Ebp, esp i stelaż w montażu z nasm

Mam kilka pytań dotyczących ebp, esp i ramki stosu w następującym kodzie.

Dlaczego odjęliśmy 28 z esp? W głównej mamy dwie lokalne zmienne x i y. Dlaczego więc nie odjęliśmy 8?

I czy nie umieszczamy wartości na stosie od prawej do lewej? Dlaczego więc dodaliśmy 1 do [eax + 8] zamiast [eax + 4]?

Jestem trochę zdezorientowany tą strukturą. Czy możesz mi pomóc? Dzięki.

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

questionAnswers(1)

yourAnswerToTheQuestion