core: align stack on a 32bit boundary

Fixes #1267.
See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf § 6.5.3.4 (p. 80 [92 physically])

> The sizeof operator yields the size (in bytes) of its operand, which may be an
expression or the parenthesized name of a type. […] When applied to an operand that has type char, unsigned char,or signed char, (or a qualified version thereof) the result is 1.