Dlaczego mój kompilator rezerwuje więcej miejsca niż wymagane dla ramki stosu funkcji?
Mam funkcję:
void func(int a)
{
int x = a+2;
}
W kodzie zespołu w funkcji prolog:
push %ebp
mov %esp, %ebp
sub $0x10, %esp
Kod musi jedynie zarezerwować miejsce na x, tj. 4 bajty. Ale rezerwuje 16 bajtów. Dlaczego ? Zawsze widziałem to, aby zarezerwować więcej miejsca niż jest to wymagane.
Zgaduję: ma tendencję do przechowywania w 16 bajtach. tj. jeśli potrzebuję powiedzieć 20 bajtów, zarezerwuje 32 bajty, bez względu na wszystko.