# we need to change to use the stack .text main: li $v0, 4 la $a0, main_msg1 syscall #printf("calling function f\n"); move $t0, $ra li $a0, 22 jal f #f(22) move $t1, $v0 #$t1 has return result move $ra, $t0 li $v0, 4 #printf("back from function f\n"); la $a0, main_msg2 syscall li $v0, 1 #printf("%d", result); move $a0, $t1 syscall li $v0, 11 li $a0, '\n' syscall li $v0, 0 #return 0 jr $ra f: # Make sure we do not overwrite our argument x # Arguments: x $a0 ->$t1 move $t1, $a0 li $v0, 4 la $a0, f_msg1 syscall #printf("in function f\n"); li $v0, 1 #printf("%d", x); move $a0, $t1 syscall li $v0, 11 li $a0, '\n' syscall mul $v0, $t1, 2 #return x * 2 jr $ra .data main_msg1: .asciiz "calling function f\n" main_msg2: .asciiz "back from function f\n" f_msg1: .asciiz "in function f\n"