eniallator

compilers AST -> RISC-V

Dec 21st, 2019
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.58 KB | None | 0 0
  1. Program p = new Program(Arrays.asList(
  2.     new Declaration("test", 0,
  3.         new Invoke("factorial", Arrays.asList(
  4.             new IntLiteral(9)
  5.         ))
  6.     ),
  7.     new Declaration("factorial", 1,
  8.         new If(
  9.             new Variable(1),
  10.             new Greater(),
  11.             new IntLiteral(1),
  12.             new Binexp(new Variable(1),
  13.                 new Times(),
  14.                 new Invoke("factorial", Arrays.asList(
  15.                     new Binexp(new Variable(1),
  16.                         new Minus(),
  17.                         new IntLiteral(1)
  18.                     )
  19.                 ))
  20.             ), new IntLiteral(1)
  21.         )
  22.     )
  23. ));
  24.  
  25. /*
  26. OUTPUT:
  27.  
  28.     .text
  29.     .align 2
  30.     .globl test_entry
  31. test_entry:
  32.     mv s0 sp
  33.     sw ra 0(sp)
  34.     addi sp sp -4
  35.     sw s0 0(sp)
  36.     addi sp sp -4
  37.     li a0 9
  38.     sw a0 0(sp)
  39.     addi sp sp -4
  40.     jal factorial_entry
  41.     lw ra 4(sp)
  42.     addi sp sp 8
  43.     lw s0 0(sp)
  44.     li a7 10
  45.     ecall
  46. factorial_entry:
  47.     mv s0 sp
  48.     sw ra 0(sp)
  49.     addi sp sp -4
  50.     lw a0 4(s0)
  51.     sw a0 0(sp)
  52.     addi sp sp -4
  53.     li a0 1
  54.     lw t1 4(sp)
  55.     addi sp sp 4
  56.     blt a0 t1 then_0
  57. else_0:
  58.     li a0 1
  59.     b exit_0
  60. then_0:
  61.     lw a0 4(s0)
  62.     sw a0 0(sp)
  63.     addi sp sp -4
  64.     sw s0 0(sp)
  65.     addi sp sp -4
  66.     lw a0 4(s0)
  67.     sw a0 0(sp)
  68.     addi sp sp -4
  69.     li a0 1
  70.     lw t1 4(sp)
  71.     sub a0 t1 a0
  72.     addi sp sp 4
  73.     sw a0 0(sp)
  74.     addi sp sp -4
  75.     jal factorial_entry
  76.     lw t1 4(sp)
  77.     mul a0 t1 a0
  78.     addi sp sp 4
  79. exit_0:
  80.     lw ra 4(sp)
  81.     addi sp sp 12
  82.     lw s0 0(sp)
  83.     jr ra
  84. */
Advertisement
Add Comment
Please, Sign In to add comment