title: Is the hash required for immediate values in ARM assembly?
body: <p>I've been working on reading through some different arm assembly code generated by gcc, and I came across something that I haven't been able to find in the spec.</p>
  
  <pre><code>movw    r0, #39784
  movt    r0, 1
  </code></pre>
  
  <p>Obviously the first one is moving the value 39784 into the bottom 16bits or r0, but the movt's operand of '1' is odd because it doesnt have the hash before it, and I was under the impression that immediate values required the hash. Is it somehow optional in certain situations? or am I missing something magical?</p>