所以我正在编写一个树遍历,我的代码在将空的$ a0寄存器与$ 0进行比较时断开。
我不知道为什么,但我想,因为null只是0,将它与零比较不应该给我一个错误
"尝试使用不存在的内存" 顺便说一下,我正在递归地遍历。
这是我的代码段
addi $sp, $sp, -16
sw $ra, 12($sp)
sw $s0, 8($sp) # $a0
sw $s1, 4($sp) # $a1
sw $s2, 0($sp) # $a2
pre:
beq $a0, $zero, done # If null done
move $s0, $a0 # Preserve $a0
jalr $a1 # Print
lw $a0, 4($s0) # Left Node
jal traverse_tree # Recursive call
lw $a0, 8($s0) # Right Node
jal pre # Recursive call
j done # Done
done:
lw $ra, 12($sp)
lw $s0, 8($sp)
lw $s1, 4($sp)
lw $s2, 0($sp)
addi $sp, $sp, 16
jr $ra