# A simple program that calls a function with 3 arguments # and prints its return value main: #int main(void) { # z = sum(x,y,30); # # printf("%d\n",z); # return 0; #} push $ra # save $ra lw $a0, x # set up arguments in a registers lw $a1, y li $a2, 30 jal sum # sum(x,y,30); sw $v0, z li $v0, 1 # printf("%d",z); lw $a0, z syscall li $v0, 11 # printf("\n") li $a0, '\n' syscall li $v0, 0 pop $ra # restore $ra jr $ra # return 0 sum: #int sum(int a, int b, int c) { # return a+b+c; #} #a $a0, b $a1, c $a2 add $v0, $a0, $a1 #$v0 = a + b add $v0, $v0, $a2 #$v0 = a + b + c jr $ra .data x: .word 5 y: .word 7 z: .space 4