Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program p = new Program(Arrays.asList(
- new Declaration("test", 0,
- new Invoke("factorial", Arrays.asList(
- new IntLiteral(9)
- ))
- ),
- new Declaration("factorial", 1,
- new If(
- new Variable(1),
- new Greater(),
- new IntLiteral(1),
- new Binexp(new Variable(1),
- new Times(),
- new Invoke("factorial", Arrays.asList(
- new Binexp(new Variable(1),
- new Minus(),
- new IntLiteral(1)
- )
- ))
- ), new IntLiteral(1)
- )
- )
- ));
- /*
- OUTPUT:
- .text
- .align 2
- .globl test_entry
- test_entry:
- mv s0 sp
- sw ra 0(sp)
- addi sp sp -4
- sw s0 0(sp)
- addi sp sp -4
- li a0 9
- sw a0 0(sp)
- addi sp sp -4
- jal factorial_entry
- lw ra 4(sp)
- addi sp sp 8
- lw s0 0(sp)
- li a7 10
- ecall
- factorial_entry:
- mv s0 sp
- sw ra 0(sp)
- addi sp sp -4
- lw a0 4(s0)
- sw a0 0(sp)
- addi sp sp -4
- li a0 1
- lw t1 4(sp)
- addi sp sp 4
- blt a0 t1 then_0
- else_0:
- li a0 1
- b exit_0
- then_0:
- lw a0 4(s0)
- sw a0 0(sp)
- addi sp sp -4
- sw s0 0(sp)
- addi sp sp -4
- lw a0 4(s0)
- sw a0 0(sp)
- addi sp sp -4
- li a0 1
- lw t1 4(sp)
- sub a0 t1 a0
- addi sp sp 4
- sw a0 0(sp)
- addi sp sp -4
- jal factorial_entry
- lw t1 4(sp)
- mul a0 t1 a0
- addi sp sp 4
- exit_0:
- lw ra 4(sp)
- addi sp sp 12
- lw s0 0(sp)
- jr ra
- */
Advertisement
Add Comment
Please, Sign In to add comment