title: Difference between "move" and "li" in MIPS assembly language
body: <p>I was practicing converting C code into MIPS assembly language, and am having trouble understanding the usage of <code>move</code> and <code>li</code> in variable assignment.</p>
  
  <p>For example, to implement the following C line in MIPS:</p>
  
  <pre><code>int x = 0;
  </code></pre>
  
  <p>If I understand it correctly (I highly doubt this, though), it looks like both of these work in MIPS assembler:</p>
  
  <pre><code>move $s0, $zero
  li $s0, $zero
  </code></pre>
  
  <p>Am I wrong? What is the difference between these two lines?</p>