Кажется, что мое понимание MIPS меня не устраивает.
Что мне нужно сделать, это создать программу, которая переворачивает ввод строки из терминала, используя стек, но без использования $ sp.Есть ли здесь кто-нибудь, кто знает MIPS?
Регистрация использования
t0 - начало строки адресаt1 - начало адреса стекаt2 - температура для найденного персонажаt3 - счетчик для t0t4 - счетчик для стекаt5 - перевод строкиt6 - длина
.data
theString: .space 42
newLine: .asciiz "\n"
stack: .space 42
.globl main
.text
main:
li $v0, 8 # Set to read string
la $a0, theString
li $a1, 42 # Set size of string
syscall # Read string from terminal
la $t0, theString # Prepare t0 with theString
la $t1, stack # Prepare t1 with stack
la $t5, newLine
addi $t3, $t0, 0
addi $t4, $t1, 42
j push
push:
addi $t3, $t3, 1
addi $t4, $t4, -1
lb $t2, ($t3)
beq $t2, $t5, epush
sb $t2, ($t4)
j push
epush:
sub $t6, $t3, $t0
addi $t6, $t6, -1
addi $t3, $t0, 0
addi $t4, $t1, 0
j pop
pop:
addi $t3, $t3, 1
addi $t4, $t4, 1
lb $t2, ($t4)
beq $t2, $t5, epop
sb $t2, ($t3)
j pop
epop:
addi $t3, $t3, 1
sb $t5, ($t3)
li $v0, 4 # Set to print string
la $a0, theString # Set var to syscall output register
syscall # Print string
li $v0, 10 # Set to end program
syscall # End Program
Например, это просто дает бесконечный цикл.(Извините за отсутствие комментариев, я просто рву свои волосы здесь)
Теперь, я думаю, что проблема где-то связана с символом новой строки, но я не знаю где?