Ну, для начала, вы не загружаете байт из myStr
внутри цикла.
Ваш lbu
загружает символ s
в $t1
до запуска цикла, новнутри цикла вы сравниваете это с адресом $t0
.
. Вам нужно lbu
байт из $t0
каждый раз проходить через цикл и сравнивать что с $t1
.
Я бы подумал, что это будет исправлением, хотя прошло уже какое-то время с тех пор, как я сделал какие-либо MIPS.
Изменение:
loop: beq $t0, $t1, continue
addi $t0, $t0, 1
j loop
в:
loop: lbu $t2, 0($t0) ; get character at current string location.
beq $t1, $t2, continue ; exit loop is it matches.
beq $0, $t2, continue ; exit loop if it's null.
addi $t0, $t0, 1 ; continue loop with next character.
j loop
Если ваша цель - просто преобразовать код C в MIPS, вы можете просто получить копию компилятора MIPS gcc
и запустить егочерез gcc -S
и, возможно, -O0
, чтобы вы могли понять вывод: -)
Это, вероятно, самый быстрый способ.Конечно, если ваше намерение состоит в том, чтобы научиться делать это вручную, вы можете игнорировать этот совет, хотя, по моему мнению, он все равно будет полезен для изучения.