Calling sequence and stack frame

Stack pointer always kept 16-byte aligned (8-byte aligned for the old unsupported -32 ABI), and it grows downward:
  Caller's frame
     remaining overflow args
16($sp) 1$^{\rm st}$ overflow arg
  16 bytes reserved
$sp for args passed in regs

Note that integers are promoted to 64 bits, and all optional parameters are allocated at least 64 bits, even if they are short.

Clint Whaley 2012-07-10