Verzeihen Sie mir die Leichtigkeit dieser Frage, aber ich bin neu auf MIPS und bin immer eine ungerade Fehler:MIPS nicht NULL erkennen
.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
Mein Programm endet nie, trotz der Tatsache, dass es eine Null-Zeichen (wie Ich habe am Ende von myString aus anderen Posts gelesen, die $ 0 entsprechen). Ich hätte gedacht, dass $ a0 auf "P", dann "5", dann "\ 0" zeigen würde und dann zu done springen und beenden würde.
Danke für Ihre Augen!
Vielen Dank Michael. Was ich also durch den Vergleich von Zeigern mache, ist, zu sagen, ob sie im wahrsten Sinne des Wortes auf dieselbe Stelle im Gedächtnis zeigen, als wenn sie denselben Wert haben? Stimmt es also, dass ich beim Vergleichen von Strings diese dereferenzieren muss? – Uzebeckatrente
Ja, was Sie jetzt tun, überprüft, ob '$ a0' ein NULL-Zeiger ist, nicht, wenn es auf ein NULL-Byte zeigt. – Michael
Mit "Was machst du gerade" meinst du, was ich ursprünglich geschrieben habe, aber du bist die Lösung für das NULL-Byte, oder? – Uzebeckatrente