title: Difference between movq and movabsq in x86-64
body: <p>I'm talking about data movement instructions in the x86-64 Intel architecture. I have read that the regular <code>movq</code> instruction can only have immediate source operands that can be represented as 32-bit two's complement numbers, while the <code>movabsq</code> instruction can have an arbitrary 64-bit immediate value as its source operand and can only have a register as a destination.</p>
  <p>Could you please elaborate on this? Does that mean I can move 64-bit immediate value using the <code>movabsq</code> instruction only? And only from immediate value to the register? I don't see how I can move a 64-bit immediate value to memory. Or maybe I was mistaken something important here.</p>