Создание гистограммы в MIPS, которая подсчитывает количество уникальных и повторных значений - PullRequest
0 голосов
/ 21 февраля 2019

Итак, мне было поручено написать функцию MIPS (называемую «my_inthist»), которая вычисляет гистограмму массива неотрицательных целочисленных значений (не более 100 элементов) и возвращает количество уникальных значений.

-адрес входного массива будет передан с использованием регистра $ a0

-количество элементов с использованием регистра $ a1

-адрес выходного массива для сохранениярезультаты в $ a2 (мы предполагаем, что выходной массив достаточно большой)

- Записи в результирующем массиве должны быть отсортированы от малого к большому в соответствии со значениями во входном массиве.

Вот как должен выглядеть вывод:

Please enter an integer: 5
7 6 1 2 7 .
The number of unique values is 4.
1 1.
2 1.
6 1.
7 2.
Your counts are correct.
Your results are sorted correctly.

Итак, вот код, который у меня есть, и неправильные результаты, которые он продолжает печатать.

my_inthist:
add $t0, $zero, $zero # i = 0

add $t3, $zero, $zero # k = 0

loop:
slt $t1, $t0, $a1     # i < num of elements(length)

beq $t1, $zero, end   

sll $t1, $t0, 2       

add $t1, $a0, $t1     # $t1 = a[i]

lw $t2, 4($t1)        # $t2 = a[a+i] 

beq $t1, $t2, count   # if one int is equal to another, k--

addi $t3, $t3, 1      # i++

addi $t0, $t0, 1      # k++

j loop

count:
subu $t3, $t3, 1      # k--

j loop

end:
move $v0, $t3         # return num of unique values k

jr $ra

Вот результаты, которые я продолжаю получать:

Please enter an integer: 5
7 6 1 2 7 .
Number of unique values is 5.
0 0.
0 0.
0 0.
0 0.
0 0.
Your counts are correct. 
Your results are not sorted. 

Я все еще не уверен в двух вещах: почему именно он не будет подсчитывать числа и выводить счетчики, икак именно сортировать полученный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...