I am having some trouble with the following mips 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
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:
Instruction references undefined symbol at 0x00400108
[0x00400108] 0x11180000 beq $8, $24, 0 [endCount-0x00400108]; 87: beq $t0, $t8, endCount
The variables are:
$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
note that the magic constant 64 is a sentinel value at the top of the stack.
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