72 .end method |
72 .end method |
73 """ |
73 """ |
74 |
74 |
75 |
75 |
76 def compile(f: Rec, ns: List[Int]) : Unit = { |
76 def compile(f: Rec, ns: List[Int]) : Unit = { |
77 val class_name = "LOOP" |
77 val class_name = "Prog" |
78 val (aprog, res, max) = compile_rec(f) |
78 val (aprog, res, max) = compile_rec(f) |
79 |
79 |
80 val init_code = init_regs(ns.padTo(max, 0)) |
80 val init_code = init_regs(ns.padTo(max, 0)) |
81 val main_code = compile_aprog(aprog.p) |
81 val main_code = compile_aprog(aprog.p) |
82 val fin_code = print_result(aprog.p.length, res, class_name) |
82 val fin_code = print_result(aprog.p.length, res, class_name) |
92 val result = ("java " + class_name + "/" + class_name).!! |
92 val result = ("java " + class_name + "/" + class_name).!! |
93 val end = System.nanoTime() |
93 val end = System.nanoTime() |
94 println("Result: " + result + " Time: " + (end - start) / 1.0e9) |
94 println("Result: " + result + " Time: " + (end - start) / 1.0e9) |
95 } |
95 } |
96 |
96 |
|
97 print("Add(69, 30) "); compile(Add, List(69, 30)) |
|
98 print("Mult(13, 9) "); compile(recs.Mult, List(13, 9)) |
|
99 print("Power(3, 4) "); compile(Power, List(3, 4)) |
|
100 print("Strt: "); compile(Strt(2), List(2,3)) |
97 |
101 |
98 //compile(S, List(3)) |
102 println("FACTORIAL") |
99 //compile(Fact, List(11)) |
103 |
100 //compile(Fact, List(12)) |
104 for (i <- 5 to 9) { |
101 //compile(Fact, List(13)) |
105 println("Input: " + i) |
102 //compile(Fact, List(14)) |
106 compile(Fact, List(i)) |
|
107 } |
|
108 |
|
109 println("PRIME TEST") |
103 |
110 |
104 for (i <- 10 to 20) { |
111 for (i <- 10 to 20) { |
105 println("Input: " + i) |
112 println("Input: " + i) |
106 compile(Prime, List(i)) |
113 compile(Prime, List(i)) |
107 } |
114 } |