Дизассемблировал простейший hello world и обнаружил такое тело для функции main:
080483d4 <main>: push %ebp mov %esp,%ebp and $0xfffffff0,%esp sub $0x10,%esp movl $0x80484c0,(%esp) call 80482f0 <puts@plt> mov $0x0,%eax leave ret
все достаточно понято, сохраняем старое значение %ebp на стеке, а указатель на стек - в %ebp, помещаем строку с hello world-ом на стек и вызываем puts, все хорошо, но зачем делается инструкция
and $0xfffffff0,%esp
зачем зануляются последние биты у указателя на стек?