.globl __start __start: li $a0, 72 li $v0, 9 syscall or $fp, $0, $v0 la $t0, main sw $t0, 0($fp) sw $0, 4($fp) jal main j done fact: li $a0, 72 li $v0, 9 syscall sw $fp, 4($v0) sw $16, 8($fp) sw $17, 12($fp) sw $18, 16($fp) sw $19, 20($fp) sw $20, 24($fp) sw $21, 28($fp) sw $22, 32($fp) sw $23, 36($fp) or $fp, $0, $v0 la $t0, fact sw $t0, 0($fp) sw $ra, 64($fp) or $16, $0, $5 li $a0, 72 li $v0, 9 syscall or $17, $v0, $0 la $v0, inner_fact sw $v0, 0($17) sw $fp, 68($17) or $5, $0, $16 li $8, 1 or $6, $0, $8 lw $gp, 0($17) or $k1, $0, $17 jalr $gp lw $fp, 4($fp) lw $ra, 64($fp) lw $16, 8($fp) lw $17, 12($fp) or $9, $0, $v1 sw $16, 8($fp) sw $17, 12($fp) sw $18, 16($fp) sw $19, 20($fp) sw $20, 24($fp) sw $21, 28($fp) sw $22, 32($fp) sw $23, 36($fp) or $v1, $0, $9 jr $31 inner_fact: li $a0, 72 li $v0, 9 syscall sw $k1, 68($v0) sw $fp, 4($v0) sw $16, 8($fp) sw $17, 12($fp) sw $18, 16($fp) sw $19, 20($fp) sw $20, 24($fp) sw $21, 28($fp) sw $22, 32($fp) sw $23, 36($fp) or $fp, $0, $v0 la $t0, inner_fact sw $t0, 0($fp) sw $ra, 64($fp) or $16, $0, $5 or $17, $0, $6 bne $16, $0, L0 sw $16, 8($fp) sw $17, 12($fp) sw $18, 16($fp) sw $19, 20($fp) sw $20, 24($fp) sw $21, 28($fp) sw $22, 32($fp) sw $23, 36($fp) or $v1, $0, $17 jr $31 L0: li $11, 1 sub $10, $16, $11 mult $17, $16 mflo $12 or $5, $0, $10 or $6, $0, $12 or $k0, $fp, $0 lw $fp, 68($fp) lw $fp, 68($fp) lw $14, 12($fp) or $fp, $k0, $0 lw $gp, 0($14) or $k1, $0, $14 jalr $gp lw $fp, 4($fp) lw $ra, 64($fp) lw $16, 8($fp) lw $17, 12($fp) or $13, $0, $v1 sw $16, 8($fp) sw $17, 12($fp) sw $18, 16($fp) sw $19, 20($fp) sw $20, 24($fp) sw $21, 28($fp) sw $22, 32($fp) sw $23, 36($fp) or $v1, $0, $13 jr $31 main: li $a0, 72 li $v0, 9 syscall sw $fp, 4($v0) or $fp, $0, $v0 la $t0, main sw $t0, 0($fp) sw $ra, 64($fp) li $15, 3 or $5, $0, $15 jal fact lw $fp, 4($fp) lw $ra, 64($fp) or $24, $0, $v1 or $16, $0, $24 li $25, 5 or $5, $0, $25 jal fact lw $fp, 4($fp) lw $ra, 64($fp) lw $16, 8($fp) or $8, $0, $v1 or $17, $0, $8 li $9, 7 or $5, $0, $9 jal fact lw $fp, 4($fp) lw $ra, 64($fp) lw $16, 8($fp) lw $17, 12($fp) or $10, $0, $v1 or $18, $0, $10 add $11, $16, $17 add $12, $11, $18 sw $16, 8($fp) sw $17, 12($fp) sw $18, 16($fp) sw $19, 20($fp) sw $20, 24($fp) sw $21, 28($fp) sw $22, 32($fp) sw $23, 36($fp) or $v1, $0, $12 jr $31 done: or $a0, $v1, $0 ori $v0, $0, 1 syscall ori $a0, $0, 0xA ori $v0, $0, 0xB syscall ori $v0, $0, 10 syscall