Существуют некоторые проблемы с кодом, который вы опубликовали.
Я пытаюсь выполнить l oop через массив, и если число больше X, выведите.
Я не могу найти символ X в вашем коде. Вы имеете в виду K
?
la t0 K #set t0 to K
Комментарий неверный. Вы загружаете адрес из K в t0
. Если вы хотите получить значение, хранящееся по этому адресу, в t0
, вам нужно загрузить адрес в другой регистр и разыменовать этот адрес в t0
, т.е. загрузить его с помощью инструкции lw
или lwu
.
addi a1 t0 0 #add t0 deallocated to a1
addi a2 t1 0 #add t1 deallocated to a2
Что вы имеете в виду под «освобождением»? Вы копируете t0
в a1
и t1
в a2
. То же самое можно архивировать с помощью псевдо инструкции mv
. Однако эти две строки излишни, поскольку вы сразу перезаписываете регистры a1
и a2
в следующих строках.
addi a0 x0 1 # print_int ecall
addi a1 t1 0 # add t1 value to print
ecall
Вы можете использовать li
/ mv
псевдо инструкции здесь. Это безоговорочно печатает значение t1
- это адрес. Если вы хотите напечатать фактический элемент массива, вам придется загрузить его, используя адрес, сохраненный в t1
- ср. lw
/ lwu
инструкции.
addi t1, t1, 4 # Increments t1 to move to the next element
jal x0, loop
При этом вы безоговорочно прыгаете на голову l oop (с псевдоинструкцией: j loop
), т.е. это означает, что вы читаете через конец вашего массива и никогда не выходите из l oop. Чтобы исправить это, вы должны использовать инструкцию условного перехода, такую как bnez
. Это означает, что вы, например, устанавливаете регистр (как счетчик) на размер массива и уменьшаете его до нуля. Или установите регистр на адрес после последнего элемента массива и ветви, пока t1
не станет равным ему.
addi a1 x0 0 # random exit 0
addi a0 x0 17 # print_int ecall
ecall
Это не случайно. Комментарий неверный, вы вызываете системный вызов Venus exit2, а не print_int. Кроме того, Венера также предоставляет системный вызов выхода (10
), который не требует аргумента.
Чего не хватает в вашем коде, так это места, где вы на самом деле пытаетесь сравнить числа и затем распечатать их на основе на это сравнение.