--C COMPILER int y = 5; int fun1(){ int x = 11; return x; } int main() { int x = 4; return y * x * fun1(); } parse finished ~ ~ ~ int = y 5 D d int F fun1 ; ~ int = x 11 return x D d int F main ; ~ int = x 4 return * * y x apply fun1 y := 5 func fun1 x := 11 ret x end fun1 func main x := 4 $t1 := y * x call fun1, $t2 $t0 := $t1 * $t2 ret $t0 end main ===== li $a0, 68 li $v0, 9 syscall or $fp, $0, $v0 la $t0, main sw $t0, 0($fp) sw $0, 4($fp) jal main j done #y := 5 li $8, 5 or $16, $0, $8 #func fun1 fun1: li $a0, 68 li $v0, 9 syscall sw $fp, 4($v0) sw $16, 8($fp) or $fp, $0, $v0 la $t0, fun1 sw $t0, 0($fp) sw $ra, 64($fp) #x := 11 li $9, 11 or $16, $0, $9 #ret x or $v1, $0, $16 jr $31 #end fun1 #func main main: li $a0, 68 li $v0, 9 syscall sw $fp, 4($v0) sw $16, 8($fp) or $fp, $0, $v0 la $t0, main sw $t0, 0($fp) sw $ra, 64($fp) #x := 4 li $10, 4 or $16, $0, $10 #$t1 := y * x mult $17, $16 mflo $11 #call fun1, $t2 jal fun1 lw $fp, 4($fp) lw $ra, 64($fp) lw $16, 8($fp) lw $17, 12($fp) or $12, $0, $v1 #$t0 := $t1 * $t2 mult $11, $12 mflo $13 #ret $t0 or $v1, $0, $13 jr $31 #end main done: ori $v0, $0, 10 syscall