title: What's the difference between 'push' and 'pushq' in at&t assembly
body: <p>I've recently started my quest of obtaining a greater understanding as to how my computer works. My question is in regards to the differences between push and pushq. </p>
  
  <p>I'm aware that push writes a value to the stack and my assumption is that pushq does the something similar. The fact the q is there makes me think that there should be a subtle difference but I can't seem to make sense of the difference.</p>
  
  <p>I stated to ponder this question while debugging the file /lib/udev/iphone-set-info using gdb with the command 'layout asm'.</p>
  
  <p>the code in question is :</p>
  
  <pre><code>pushq  $0x0
  push   %r9
  </code></pre>
  
  <p>I understand that $0x0 is hexadecimal for NULL and that %r9 is one of the general registers. Does this just mean that Null us written to the stack with register %r9 written above it?</p>