Почему мой компилятор резервирует больше места, чем требуется для фрейма стека функций?

У меня есть функция:

void func(int a)
{
    int x = a+2;
}

В коде сборки, в прологе функции:

push %ebp
mov %esp, %ebp
sub $0x10, %esp

Код должен зарезервировать место только для x, то есть 4 байта. Но это резервирование 16 байтов. Это почему ? Я всегда видел, чтобы зарезервировать больше места, чем требовалось.

Мое предположение: он имеет тенденцию хранить в 16 байтах. то есть, если мне нужно было сказать 20 байтов, он зарезервирует 32 байта, несмотря ни на что.

Ответы на вопрос(1)

Ваш ответ на вопрос