.data empty_Fac: .text jal Main li $v0 10 syscall Main: sw $fp -8($sp) move $fp $sp subu $sp $sp 8 sw $ra -4($fp) la $a0 empty_Fac li $a1 10 jal Fac.ComputeFac move $t0 $v0 move $a0 $t0 jal _print lw $ra -4($fp) lw $fp -8($fp) addu $sp $sp 8 jr $ra Fac.ComputeFac: sw $fp -8($sp) move $fp $sp subu $sp $sp 12 sw $ra -4($fp) sw $s0 -12($fp) move $t0 $a0 move $s0 $a1 move $a0 $s0 li $t9 1 slt $t1 $a0 $t9 blez $t1 if1_else li $t1 1 j if1_end if1_else: move $a0 $s0 li $t9 1 subu $t2 $a0 $t9 move $a0 $t0 move $a1 $t2 jal Fac.ComputeFac move $t2 $v0 move $a0 $s0 move $t9 $t2 mul $t1 $a0 $t9 if1_end: move $v0 $t1 lw $s0 -12($fp) lw $ra -4($fp) lw $fp -8($fp) addu $sp $sp 12 jr $ra _print: li $v0 1 # syscall: print integer syscall la $a0 _newline li $v0 4 # syscall: print string syscall jr $ra _error: li $v0 4 # syscall: print string syscall li $v0 10 # syscall: exit syscall _heapAlloc: li $v0 9 # syscall: sbrk syscall jr $ra .data .align 0 _newline: .asciiz "\n" _str0: .asciiz "null pointer\n"