Я пытаюсь кодировать код, эквивалентный MIPS этого кода на языке высокого уровня:Правильный код MIPS для цикла?
i = 0;
n = str2; //supplied by user from console
while(i < n) {
System.out.println(str1); //str1 is supplied by user from console
i++;
}
System.exit(0);
Это мой MIPS код:
.data
str1: .asciiz "Enter the first integer: "
str2: .asciiz "Enter the second integer: "
newline: .asciiz "\n"
.text # instructions follow this line
main: # indicates start of code (first instruction to execute)
add $s0,$zero, $zero # $s0 = 0
add $s1, $zero, str2 # $s1 = 0
slt $t0, $s0, $s1
beq $t0, $zero, Exit
li $v0, 1 # load appropriate system call code into register $v0;
# code for printing integer is 1
move $a0, str1 # move integer to be printed into $a0: $a0 = str1
syscall
addi $s0, $s0, 1 # $s0++
j loop #jump back to loop
Exit: nop
Я пытаюсь напечатать 1-й номер суммы от значения 2-го числа. Пример: 1-й номер: 2, 2-й номер: 4, поэтому печать 2 четыре раза
Я использую QTSpim, но я действительно не знаю, автоматически ли он выполняет переупорядочение. Он продолжал рушиться, но я думаю, что это было связано с бесконечным циклом. И большое спасибо за вашу помощь. – Abdul