title: MIPS while loop error
body: <p>I am having some trouble with the following mips code:</p>
  
  <pre><code>    li $t0, -1
      li $t5, 0
      countNumberofVariables:
          addi $t0, $t0, 1
          beq $t0, $t8, endCount
          add $t1, $t0, $t9
          lb $t1, ($t1)
          li $t2, 10
          beq $t1, $t2, endCount
          li $t2, 13
          beq $t1, $t2, endCount
          li $t2, 97
          blt $t1, $t2, countNumberofVariables
          li $t2, 122
          bgt $t1, $t2, countNumberofVariables
          li $t2, -1
          stackScan:
              addi $t2, $t2, 2
              add $t3, $sp, $t2
              lb $t3, ($t3)
              beq $t3, $t1, countNumberOfVariables
              li $t4, 64
              bne $t4, $t3, stackScan
              addi $sp, $sp, -2
              sb $t1, ($sp)
              li $t1, 0
              sb $t1, 1($sp)
              addi $t5,$t5,1
              j countNumberofVariables
  
      endCount:
      move $a0, $t5
      li $v0, 1
      syscall
  
      j main
  </code></pre>
  
  <p>What I am trying to do is count the number of unique lower case letters in a string (address in $t9, length in $t8). The problem I am having, when running under SPIM 7.3 is that I get this error:</p>
  
  <pre><code>Instruction references undefined symbol at 0x00400108
  [0x00400108]    0x11180000  beq $8, $24, 0 [endCount-0x00400108]; 87: beq $t0, $t8, endCount
  </code></pre>
  
  <p>The variables are:</p>
  
  <pre><code>$t0, outer loop counter
  $t5, number of unique lowercase letters in string
  $t1, the character at the current location in the string
  $t2, random variable in outer loop, loop counter in inner loop
  $t3, the character at the current location on the stack in the inner loop
  $t4, random variable
  </code></pre>
  
  <p>note that the magic constant 64 is a sentinel value at the top of the stack.</p>
  
  <p>EDIT: SOLVED. I changed label names to be shorter, which seemed to satisfy spim. Not quite sure what the underlying problem was, but if you are having a problem where there doesn't seem like there should be one, change to shorter labels</p>