Ejemplo n.º 1
0
 /**
  * Create Header for the jasmin assembler code and add the code of the input file as assembler
  * code
  */
 private static String createOutput(CodeGenerator codeGenerator, String fileName) {
   int size = codeGenerator.getSymbolTable().size() + 1;
   return ".bytecode 50.0\n"
       + ".class public "
       + fileName
       + "\n"
       + ".super java/lang/Object\n"
       + ".method public <init>()V\n"
       + "\t.limit stack 1\n"
       + "\t.limit locals 1\n"
       + "\taload_0\n"
       + "\tinvokespecial java/lang/Object/<init>()V\n"
       + "\treturn\n"
       + ".end method\n"
       + "\t.method public static main([Ljava/lang/String;)V\n"
       + "\t.limit stack "
       + codeGenerator.getStackHeight()
       + "\n"
       + // May work...
       "\t.limit locals "
       + size
       + "\n"
       + codeGenerator.getCode()
       + "\treturn\n"
       + ".end method\n";
 }
Ejemplo n.º 2
0
 /**
  * Copy SymbolTable from the TypeChecker to the CodeGenerator and give it a new index (not
  * necessary to know the types any more - they are all correct!)
  */
 private static void copySymbolTable(TypeChecker typeChecker, CodeGenerator codeGenerator) {
   int i = typeChecker.getSymbolTable().size();
   for (String id : typeChecker.getSymbolTable().keySet())
     codeGenerator.getSymbolTable().put(id, i--);
 }