progs/compile.scala
changeset 535 095be64c03c1
parent 471 9476086849ad
child 600 d488a3e7b0ec
equal deleted inserted replaced
534:6937caaff1d9 535:095be64c03c1
   208                                         //  minus2 := minus1 + minus2;
   208                                         //  minus2 := minus1 + minus2;
   209                Assign("minus1",Var("temp")), //  minus1 := temp;
   209                Assign("minus1",Var("temp")), //  minus1 := temp;
   210                Assign("n",Aop("-",Var("n"),Num(1))))), //  n := n - 1 };
   210                Assign("n",Aop("-",Var("n"),Num(1))))), //  n := n - 1 };
   211        Write("minus1"))                 //  write minus1
   211        Write("minus1"))                 //  write minus1
   212 
   212 
   213 
       
   214 
       
   215 // prints out the JVM-assembly program
   213 // prints out the JVM-assembly program
   216 
   214 
   217 println(compile(fib_test, "fib"))
   215 println(compile(fib_test, "fib"))
   218 
   216 
   219 // can be assembled with 
   217 // can be assembled with 
   233   val fw = new java.io.FileWriter(class_name + ".j") 
   231   val fw = new java.io.FileWriter(class_name + ".j") 
   234   fw.write(output) 
   232   fw.write(output) 
   235   fw.close()
   233   fw.close()
   236 }
   234 }
   237 
   235 
   238 def compile_and_run(bl: Block, class_name: String) : Unit = {
   236 def compile_all(bl: Block, class_name: String) : Unit = {
   239   compile_tofile(bl, class_name)
   237   compile_tofile(bl, class_name)
   240   println("compiled ")
   238   println("compiled ")
   241   val test = ("java -jar jvm/jasmin-2.4/jasmin.jar " + class_name + ".j").!!
   239   val test = ("java -jar jvm/jasmin-2.4/jasmin.jar " + class_name + ".j").!!
   242   println("assembled ")
   240   println("assembled ")
   243   ("java " + class_name + "/" + class_name).!!
   241 }
   244 }
   242 
   245 
   243 
   246 
   244 compile_all(fib_test, "fib")
   247 compile_and_run(fib_test, "fib")
   245 
   248