> Why does the stack have to be aligned to 16 bytes in Valgrind?
On x86, some of the SSEn instructions require 16-byte alignment.
"Use of 128-bit packed integer computation instructions with memory
operands that are not 16-byte aligned results in a general protection
exception (#GP)." Section 11.6.11, Intel 64 and IA-32 Developer's
Manual, Volume 1: Basic Architecture,
http://www.intel.com/design/processor/manuals/253665.pdf
In order for those instructions to work for local variables,
then the stack frame itself must be 16-byte aligned so that
the compiler has a reference point for alignment.
--
|