# we need to change to use the stack .text main: main_prologue: begin push $ra li $v0, 4 la $a0, main_msg1 syscall #printf("calling function f\n"); li $a0, 22 jal f #f(22) move $t1, $v0 #$t1 has return result 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, 0 #return 0 main_epilogue: pop $ra end 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"