如何检查MIPS汇编中寄存器是否为空?

时间:2016-10-18 17:46:01

标签: assembly mips low-level

所以我正在编写一个树遍历,我的代码在将空的$ 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

0 个答案:

没有答案