MIPS 不识别 NULL
MIPS not recognizing NULL
请原谅我这个问题的简单性,但我是 MIPS 的新手并且遇到了一个奇怪的错误:
.data
myString: .asciiz "P5"
.text
li $v0 4
la $a0, myString
newLoop:
syscall
addi $a0, $a0, 1
beq $a0, $zero, done
j newLoop
done:
li $v0, 10
syscall
尽管 myString 的末尾有一个空字符(正如我从其他帖子中收集到的,相当于 $zero),但我的程序从未终止。我本以为 $a0 会指向 "P",然后是“5”,然后是“\0”,然后跳转到 done 并终止。
谢谢你的关注!
您要与零进行比较的是地址,而不是该地址的值。你需要这样的东西:
lbu $t0,($a0) # load the byte pointed to by $a0
beq $t0,$zero,done
请原谅我这个问题的简单性,但我是 MIPS 的新手并且遇到了一个奇怪的错误:
.data
myString: .asciiz "P5"
.text
li $v0 4
la $a0, myString
newLoop:
syscall
addi $a0, $a0, 1
beq $a0, $zero, done
j newLoop
done:
li $v0, 10
syscall
尽管 myString 的末尾有一个空字符(正如我从其他帖子中收集到的,相当于 $zero),但我的程序从未终止。我本以为 $a0 会指向 "P",然后是“5”,然后是“\0”,然后跳转到 done 并终止。
谢谢你的关注!
您要与零进行比较的是地址,而不是该地址的值。你需要这样的东西:
lbu $t0,($a0) # load the byte pointed to by $a0
beq $t0,$zero,done