; Symbol table GLOBAL ; Function: INT fact([INT]) ; Function: INT main([]) ; Symbol table main ; name res type INT location -4 ; Symbol table fact ; name n type INT location 12 .section .text ;Current temp: null ;IR Code: MV fp, sp JR func_main HALT func_main: SW fp, 0(sp) MV fp, sp ADDI sp, sp, -4 ADDI sp, sp, -4 SW t1, 0(sp) ADDI sp, sp, -4 SW t2, 0(sp) ADDI sp, sp, -4 SW t3, 0(sp) ADDI sp, sp, -4 SW t4, 0(sp) ADDI sp, sp, -4 LI t1, 5 SW t1, 0(sp) ADDI sp, sp, -4 ADDI sp, sp, -4 SW ra, 0(sp) ADDI sp, sp, -4 JR func_fact ADDI sp, sp, 4 LW ra, 0(sp) ADDI sp, sp, 4 LW t2, 0(sp) ADDI sp, sp, 4 SW t2, -4(fp) LW t3, -4(fp) PUTI t3 LI t4, 0 SW t4, 8(fp) J func_ret_main func_ret_main: ADDI sp, sp, 4 LW t4, 0(sp) ADDI sp, sp, 4 LW t3, 0(sp) ADDI sp, sp, 4 LW t2, 0(sp) ADDI sp, sp, 4 LW t1, 0(sp) MV sp, fp LW fp, 0(fp) RET func_fact: SW fp, 0(sp) MV fp, sp ADDI sp, sp, -4 ADDI sp, sp, -0 SW t1, 0(sp) ADDI sp, sp, -4 SW t2, 0(sp) ADDI sp, sp, -4 SW t3, 0(sp) ADDI sp, sp, -4 SW t4, 0(sp) ADDI sp, sp, -4 SW t5, 0(sp) ADDI sp, sp, -4 SW t6, 0(sp) ADDI sp, sp, -4 SW t7, 0(sp) ADDI sp, sp, -4 SW t8, 0(sp) ADDI sp, sp, -4 SW t9, 0(sp) ADDI sp, sp, -4 LW t2, 12(fp) LI t1, 1 BGT t2, t1, else_1 LI t3, 1 SW t3, 8(fp) J func_ret_fact J out_1 else_1: LW t8, 12(fp) LW t5, 12(fp) LI t4, 1 SUB t6, t5, t4 SW t6, 0(sp) ADDI sp, sp, -4 ADDI sp, sp, -4 SW ra, 0(sp) ADDI sp, sp, -4 JR func_fact ADDI sp, sp, 4 LW ra, 0(sp) ADDI sp, sp, 4 LW t7, 0(sp) ADDI sp, sp, 4 MUL t9, t8, t7 SW t9, 8(fp) J func_ret_fact out_1: func_ret_fact: ADDI sp, sp, 4 LW t9, 0(sp) ADDI sp, sp, 4 LW t8, 0(sp) ADDI sp, sp, 4 LW t7, 0(sp) ADDI sp, sp, 4 LW t6, 0(sp) ADDI sp, sp, 4 LW t5, 0(sp) ADDI sp, sp, 4 LW t4, 0(sp) ADDI sp, sp, 4 LW t3, 0(sp) ADDI sp, sp, 4 LW t2, 0(sp) ADDI sp, sp, 4 LW t1, 0(sp) MV sp, fp LW fp, 0(fp) RET .section .strings