title: Loading 32 bit values to a register in arm assembly
body: <p>I want to load 1 32 bit hexadecimal directly into a register using arm assembly.</p>
  
  <pre><code>mov r1,#0x6c617669
  </code></pre>
  
  <p>This cannot be used because from this instruction we can only load 8 bit values. So I have load the 32 bit value directly from the memory. So how can I store the 32 bit value in memory and load it directly to a register using arm assembly?  </p>
  
  <p>I tried this code.</p>
  
  <pre><code>    .global main
  main:
      sub sp,sp,#4
      str lr,[sp,#0]
  
      sub sp,sp,#4
      str r0,x
      add sp,sp,#4
  
      ldr lr,[sp,#0]
      add sp,sp,#4
      mov pc,lr
  
      .data
  x: .word 0x6c617669
  </code></pre>
  
  <p>But gives the following error.</p>
  
  <pre><code>test1.s: Assembler messages: 
  test1.s:45: Error: internal_relocation (type: OFFSET_IMM) not fixed up
  </code></pre>