avrora.stack.isea
Class ISEInterpreter
java.lang.Object
avrora.stack.isea.ISEInterpreter
- All Implemented Interfaces:
- InstrVisitor
- public class ISEInterpreter
- extends java.lang.Object
- implements InstrVisitor
The ISEInterpreter
class implements an abstract interpreter for intraprocedural
side effect analysis. This abstract interpreter simply keeps tracks of which register values
have been written, read, or overwritten, as well as the values on the stack.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
printer
protected final Verbose.Printer printer
program
protected final Program program
pc
protected int pc
nextPC
protected int nextPC
state
protected ISEState state
returnState
protected ISEState returnState
states
protected java.util.HashMap states
cache
protected final ISEInterpreter.SummaryCache cache
ISEInterpreter
public ISEInterpreter(Program p,
ISEInterpreter.SummaryCache cs)
readRegister
protected byte readRegister(Register r)
getRegister
protected byte getRegister(Register r)
writeRegister
protected void writeRegister(Register r,
byte val)
getSREG
protected byte getSREG()
writeSREG
protected void writeSREG(byte val)
readIORegister
protected byte readIORegister(int ioreg)
writeIORegister
protected void writeIORegister(int ioreg,
byte val)
relative
protected int relative(int offset)
absolute
protected int absolute(int offset)
branch
protected void branch(int addr)
jump
protected void jump(int addr)
processReturnState
protected ISEState processReturnState(ISEState caller,
ISEState ret)
postReturn
protected void postReturn(ISEState state)
postReturnFromInterrupt
protected void postReturnFromInterrupt(ISEState state)
skip
protected void skip()
popByte
protected byte popByte()
addToWorkList
protected void addToWorkList(java.lang.String str,
int pc,
ISEState s)
analyze
public ISEState analyze(int begin_addr)
run
protected void run()
visit
public void visit(Instr.ADC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ADD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ADIW i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.AND i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ANDI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ASR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BCLR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BLD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRBC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRBS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRCC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRCS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BREAK i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BREQ i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRGE i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRHC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRHS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRID i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRIE i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRLO i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRLT i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRMI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRNE i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRPL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRSH i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRTC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRTS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRVC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BRVS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BSET i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.BST i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CALL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CBI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CBR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLH i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLN i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLT i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLV i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CLZ i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.COM i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CPC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CPI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.CPSE i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.DEC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.EICALL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.EIJMP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ELPM i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ELPMD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ELPMPI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.EOR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.FMUL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.FMULS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.FMULSU i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ICALL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.IJMP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.IN i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.INC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.JMP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LDD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LDI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LDPD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LDPI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LDS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LPM i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LPMD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LPMPI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LSL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.LSR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.MOV i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.MOVW i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.MUL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.MULS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.MULSU i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.NEG i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.NOP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.OR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ORI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.OUT i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.POP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.PUSH i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.RCALL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.RET i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.RETI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.RJMP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ROL i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ROR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBCI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBIC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBIS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBIW i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBR i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBRC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SBRS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SEC i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SEH i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SEI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SEN i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SER i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SES i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SET i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SEV i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SEZ i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SLEEP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SPM i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.ST i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.STD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.STPD i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.STPI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.STS i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SUB i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SUBI i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.SWAP i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.TST i)
- Specified by:
visit
in interface InstrVisitor
visit
public void visit(Instr.WDR i)
- Specified by:
visit
in interface InstrVisitor