9.1.3 Address indicating stack pointer

An address that is a multiple of 4 is set in the stack pointer.

Although the addresses indicated by the stack pointer must all be either multiples of 4, it is not necessary for all the data stored on the stack to be aligned on either a 4-byte boundary. Each data item is stored on the stack at the location in accordance with its alignment. For example, if data is of type char, it can be stored on a 1-byte boundary even on the stack, because its data alignment is 1.