avrora.core.isdl.gen
Class InterpreterGenerator

java.lang.Object
  extended byavrora.core.isdl.ast.StmtVisitor.DepthFirst
      extended byavrora.core.isdl.gen.InterpreterGenerator
All Implemented Interfaces:
Architecture.EncodingVisitor, Architecture.InstrVisitor, Architecture.OperandVisitor, Architecture.SubroutineVisitor, Architecture.Visitor, StmtVisitor
Direct Known Subclasses:
FIFInterpreterGenerator

public class InterpreterGenerator
extends StmtVisitor.DepthFirst
implements Architecture.Visitor

The InterpreterGenerator class is a visitor over the code of an instruction declaration or subroutine that generates the appropriate Java code that implements an interpreter for the architecture.


Nested Class Summary
 class InterpreterGenerator.CodeGenerator
          The CodeGenerator class is used to generate code for individual expressions.
protected  class InterpreterGenerator.GetterSetterMap
           
protected  class InterpreterGenerator.IORegMap
           
protected  class InterpreterGenerator.MapRep
           
 
Nested classes inherited from class avrora.core.isdl.ast.StmtVisitor
StmtVisitor.DepthFirst
 
Field Summary
protected  Architecture architecture
           
protected  InterpreterGenerator.CodeGenerator codeGen
           
protected  java.util.HashMap mapMap
           
protected  java.util.HashMap operandMap
           
protected  Printer printer
           
 
Constructor Summary
InterpreterGenerator(Architecture a, Printer p)
          The constructor for the InterpreterGenerator class builds an object capable of generating the interpreter for a particular architecture that outputs to the specified printer.
 
Method Summary
protected  java.lang.String andString(int mask)
           
protected  void emitAnd(Expr e, int val)
           
protected  void emitBinOp(Expr e, java.lang.String op, int p, int val)
           
protected  void emitCall(java.lang.String s, Expr e)
           
protected  void emitCall(java.lang.String s, Expr e1, Expr e2)
           
protected  void emitCall(java.lang.String s, java.lang.String e1, Expr e2, Expr e3)
           
 void generateCode()
           
protected  int getBitRangeMask(int low, int high)
           
protected  int getInverseBitRangeMask(int low, int high)
           
protected  InterpreterGenerator.MapRep getMapRep(java.lang.String n)
           
protected  int getSingleBitMask(int bit)
           
protected  int getSingleInverseBitMask(int bit)
           
protected  java.lang.String getVariable(Token variable)
           
protected  void initializeMaps()
           
protected  void initializeOperandMap(CodeRegion cr)
           
 void visit(CallStmt s)
           
 void visit(DeclStmt s)
           
 void visit(EncodingDecl d)
           
 void visit(IfStmt s)
           
 void visit(InstrDecl d)
           
 void visit(MapAssignStmt s)
           
 void visit(MapBitAssignStmt s)
           
 void visit(MapBitRangeAssignStmt s)
           
 void visit(OperandDecl d)
           
 void visit(ReturnStmt s)
           
 void visit(SubroutineDecl d)
           
 void visit(VarAssignStmt s)
           
 void visit(VarBitAssignStmt s)
           
 void visit(VarBitRangeAssignStmt s)
           
 
Methods inherited from class avrora.core.isdl.ast.StmtVisitor.DepthFirst
visitStmtList
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

printer

protected final Printer printer

architecture

protected final Architecture architecture

mapMap

protected final java.util.HashMap mapMap

operandMap

protected java.util.HashMap operandMap

codeGen

protected final InterpreterGenerator.CodeGenerator codeGen
Constructor Detail

InterpreterGenerator

public InterpreterGenerator(Architecture a,
                            Printer p)
The constructor for the InterpreterGenerator class builds an object capable of generating the interpreter for a particular architecture that outputs to the specified printer. In this implementation, the interpreter generator simply outputs visit() methods for each instruction that are meant to be pasted into a template file containing the rest of the interpreter. This can be done by constructing a SectionFile instance.

Parameters:
a - the architecture to generate an interrupter for
p - a printer to output the code implementing the interpreter
Method Detail

initializeMaps

protected void initializeMaps()

generateCode

public void generateCode()

visit

public void visit(OperandDecl d)
Specified by:
visit in interface Architecture.OperandVisitor

visit

public void visit(EncodingDecl d)
Specified by:
visit in interface Architecture.EncodingVisitor

visit

public void visit(InstrDecl d)
Specified by:
visit in interface Architecture.InstrVisitor

initializeOperandMap

protected void initializeOperandMap(CodeRegion cr)

visit

public void visit(SubroutineDecl d)
Specified by:
visit in interface Architecture.SubroutineVisitor

visit

public void visit(CallStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(DeclStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(IfStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(MapAssignStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(MapBitAssignStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(MapBitRangeAssignStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

getMapRep

protected InterpreterGenerator.MapRep getMapRep(java.lang.String n)

visit

public void visit(ReturnStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(VarAssignStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(VarBitAssignStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

visit

public void visit(VarBitRangeAssignStmt s)
Specified by:
visit in interface StmtVisitor
Overrides:
visit in class StmtVisitor.DepthFirst

getVariable

protected java.lang.String getVariable(Token variable)

emitBinOp

protected void emitBinOp(Expr e,
                         java.lang.String op,
                         int p,
                         int val)

andString

protected java.lang.String andString(int mask)

emitAnd

protected void emitAnd(Expr e,
                       int val)

emitCall

protected void emitCall(java.lang.String s,
                        Expr e)

emitCall

protected void emitCall(java.lang.String s,
                        Expr e1,
                        Expr e2)

emitCall

protected void emitCall(java.lang.String s,
                        java.lang.String e1,
                        Expr e2,
                        Expr e3)

getSingleBitMask

protected int getSingleBitMask(int bit)

getSingleInverseBitMask

protected int getSingleInverseBitMask(int bit)

getBitRangeMask

protected int getBitRangeMask(int low,
                              int high)

getInverseBitRangeMask

protected int getInverseBitRangeMask(int low,
                                     int high)