title: x64 calling convention (stack) and varargs
body: <p>I've read <a href="http://msdn.microsoft.com/en-us/library/dd2wa36c.aspx" rel="noreferrer">Microsoft's documentation</a>, but the scheme is so awkward, I thought I'd double-check to make sure I'm understanding it correctly...</p>
  
  <p>My understanding is the generic method by which parameters are passed is this:</p>
  
  <pre><code>--- bottom of stack ---
  (return address)
  [shadow space for arg 1]
  [shadow space for arg 2]
  [shadow space for arg 3]
  [shadow space for arg 4]
  arg N
  arg N - 1
  arg N - 2
  ...
  arg 6
  arg 5
  ---- top of stack -----
  </code></pre>
  
  <p>It seems so awkward when implementing <code>va_arg</code> and such... is this actually correct?</p>