Я новичок в MIPS и хотел бы кое-что подумать о переводе этого псевдокода c ++ в MIPS,
int keys[numkeys];
int output[numkeys];
countingsort(int *keys, int *output, numkeys, maxnumber) {
int count[maxnumber+1], n;
for (n = 0; n++; n ≤ maxnumber)
count[n] = 0;
for (n = 0; n++; n < numkeys)
count[keys[n]]++;
for (n = 1; n++; n ≤ maxnumber)
count[n] = count[n] + count[n-1];
for (n = 0; n++; n < numkeys) {
output[count[keys[n]]-1] = keys[n];
count[keys[n]]--;
}
}
Специально для первого цикла for, я правильно подхожу к нему?
ключевые и выходные массивы находятся в регистрах $ a0 и $ a1, а numkeys и maxnumber - в регистрах $ a2 и $ a3, и я создал массив для подсчета.
count: .word maxnumber
counting_sort:
la $t0, count
lw $t0, 4(count)
li $t1, 0 #n = 0
loop1:
ble $t1, $a3, exit
lw $t2, count($t1)
move $t2, $zero
addi $t1, $t1, 1
j loop1