Searching minimum on MIPS and C
C:
#include <stdio.h>
int main () {
char ar[] = {1,-5,3,6,-2};
int min = ar[0];
int i;
for (i = 0; i < sizeof(ar); i++) {
if (ar[i] < min) {
min = ar[i];
}
}
printf("Min : %d\n", min);
}
MIPS:
.data
ar: .word 1, -5, 3, 6, -2, -10, 8
size: .word 7
.text
.globl main
main:
la $t0, ar #adr of ar
lw $t1, 0($t0) #min
lw $t2, size #load array size
li $t3, 0 #i = 0
loop:
beq $t3, $t2, exit #if i < sizeof(ar) jump to exit
lw $s0, ($t0) #get element of array
blt $s0, $t1, ifbody# if ar[i] < min jump to ifbody
addi $t3, $t3, 1 #i++
addi $t0, $t0, 4 #adr+4
j loop
ifbody:
move $t1, $s0 #min = ar[i]
j loop
exit:
move $a0, $t1
li $v0, 1
syscall
li $v0, 10
syscall |