title: ARMv8 Printing Multiple Strings with Same Number Reference
body: <p>Here's my code, before I explain my problem:</p>
  
  <p>I'm new to ARM by the way, so I'm a super newbie. For now, I just cut out the unnecessary bits of my code. 
  x0 - x7 being the "argument" registers, x29 is the frame pointer and x30 is the link register. x19 and x20 are just callee saved registers.</p>
  
  <pre><code>string1:        .string "constant = %d   low value = %d \n\n"
  string2:        .string "constant = %d \n"
  
  
                  .balign 4
                  .global main
  
  main:           stp     x29,    x30,    [sp,    -16]!
                  mov     x29,    sp
  
                  mov     x20,    -1000         // Setting values
                  mov     x19,    5
  
  print:          adrp    x0,    string1
                  add     x0,    x0,     :lo12:string1
                  mov     x1,    x19
                  mov     x2,    x20
                  bl      printf
  
  print2:         adrp    x0,    string2
                  add     x0,    x0,     :lo12:string2
                  mov     x3,    x19
                  bl      printf
  
  
  done:           mov x0, 0
  
  end:            ldp     x29,   x30,   [sp],   16
                  ret
  </code></pre>
  
  <p>Now for some reason, during "print", it prints out "constant = 5" just fine. However when it goes to "print2", it prints out "constant = 0". What's happening and why does it not print to 5 even though I haven't manipulated register x19 yet? I don't have quite the full grasp of how these work.</p>
  
  <p>Result:</p>
  
  <pre><code>  constant = 5    low value = -1000
  
    constant = 0
  </code></pre>
  
  <p>thanks</p>