Ошибка адреса памяти вне границ в MIPS, но работает в другой функции

Я делаю программу в MIPS, которая будет сравнивать две строки, но я не могу получить доступ к нужным местам. У меня есть функция, которая вычисляет длину строк, которая работает нормально, но когда я пытаюсь использовать другую функцию (в данном случае это просто проверка, работает ли она), она говорит, что я обращаюсь к неправильной памяти. Я использую QTSpim для проверки. Работающая функция — это duzinaStringa, а не работающая — krajStringa. В настоящее время он просто пытается распечатать первый символ строки, поэтому я могу убедиться, что он работает.

.text


krajStringa: 

li $v0,0
li $t0,0 #brojac1 
 
move $t2, $a0 #adresa prvog
move $t3, $a1 #adresa drugog

lb $a0,0($t2) 
li $v0,4 
syscall
jr $ra 






duzinaStringa:  
move $t1,$a0 
li $t0,0 
petlja: 
    lb $t2,0($t1) 
    beqz $t2,krajDuzine
        addi $t1,$t1,1
        addi $t0,$t0,1 
        j petlja

    krajDuzine: 
    addi $t0,$t0,-1 
    move $v0,$t0
    jr $ra


main:

la $a0,str1
li $v0, 4
syscall

la $a0, arr
li $a1,200 
li $v0, 8
syscall

la $a0,str1
li $v0, 4
syscall

la $a0, arr2
li $a1,200 
li $v0, 8
syscall

la $a0,arr
jal duzinaStringa
move $a2,$v0


la $a0,arr2
jal duzinaStringa
move $a3,$v0 

la $a0,arr
la $a1,arr2
jal krajStringa


li $v0,10
syscall

.data
arr: .space 200
arr2: .space 200
str1: .asciiz "Unesi string: \n"

person makse    schedule 03.05.2021    source источник
comment
Сообщения об ошибках довольно специфичны. Если вы получаете сообщение об ошибке и хотите помочь с этим, поделитесь точным сообщением.   -  person Erik Eidt    schedule 03.05.2021
comment
syscall #4 (строка печати) принимает указатель, а не байт. Вы либо хотите напечатать целое число, либо использовать адрес.   -  person Erik Eidt    schedule 03.05.2021
comment
@ErikEidt Он буквально просто говорит: «Адрес памяти выходит за пределы» и возвращает ноль в консоли.   -  person makse    schedule 03.05.2021
comment
@ErikEidt Вот и все, переключил на системный вызов для печати символов, спасибо   -  person makse    schedule 03.05.2021


Ответы (1)


Как указал @ErikEidt, я использовал неправильный системный вызов при печати первого символа строки.

person makse    schedule 03.05.2021