在MIPS中创建直方图,以计算唯一值计数和重复值计数

时间:2019-02-21 20:04:01

标签: arrays mips

因此,我的任务是编写一个MIPS函数(称为“ my_inthist”),该函数计算非负整数值(不超过100个元素)的数组的直方图并返回唯一值的数量。 / p>

-输入数组的地址将通过寄存器$ 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. 

我仍然不确定两件事,为什么它为什么不对数字进行计数并输出计数,以及如何对结果数组进行排序。

0 个答案:

没有答案