| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- .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
|