# Example of passing an array into a function main: #prolog push $ra la $a0, array #v0 = sumOf(array,10); li $a1, 10 jal sumOf move $a0, $v0 #printf("%d",v0); li $v0, 1 syscall li $v0, 0 #epilog pop $ra jr $ra #int sumOf(int a[], int n) #{ # int i; int sum = 0; # for (i = 0; i < n; i++) sum += a[i]; # return sum; #} #int sumOf(int a[], int n) #{ # int i = 0; # int sum = 0; # # for: # if i >= n goto end_for # sum = sum + a[i]; # i = i + 1; # goto for # end_for # return sum; #} sumOf: #prolog push $ra li $t0, 0 #$t0 is i; i = 0 li $t1, 0 #$t0 is sum; sum = 0; li $t2, 4 #$t0 is sizeof(int) for: bge $t0, $a1, end_for #if i >= n goto end_for mul $t3, $t0, $t2 #offset = i * 4 add $t4, $a0, $t3 #t4 = address of a + offset lw $v0, ($t4) #$v0 = a[i] add $t1, $t1, $v0 #sum = sum + a[i] addi $t0, $t0, 1 # i = i + 1 j for #goto for end_for: move $v0, $t1 #set return value #epilog pop $ra jr $ra .data array: .word 5, 4, 7, 6, 8, 9, 1, 2, 3, 0