title: MIPS assembly assignment - issue with a load word
body: <p>The following code used to implement the instruction  </p>
  
  <pre><code>sllv $s0, $s1, $s2
  </code></pre>
  
  <p>which uses the least significant 5 bits of the value in register $s2
  to specify the amount register $s1 should be shifted left:</p>
  
  <pre><code>          .data
     mask:  .word  0xfffff83f
            .text
    start:  lw     $t0, mask
            lw     $s0, shifter
            and    $s0,$s0,$t0
            andi   $s2,$s2,0x1f
            sll    $s2,$s2,6
            or     $s0,$s0,$s2
            sw     $s0, shifter
  shifter:  sll    $s0,$s1,0
  </code></pre>
  
  <p>I know what most of those instructions are doing.</p>
  
  <p>I don't however understand how the second load word is loading something from shifter which itself is an instruction and not a word.</p>
  
  <p>Also the value of the mask in hex when converted to binary doesn't have zeroes in the least 5 significant places as the question says so I am not sure how it will mask the least 5 sig places.</p>