avrora.stack
Class AbstractInterpreter
java.lang.Object
avrora.stack.AbstractArithmetic
avrora.stack.AbstractInterpreter
- All Implemented Interfaces:
- InstrVisitor
- public class AbstractInterpreter
- extends AbstractArithmetic
- implements InstrVisitor
The AbstractInterpreter
class implements the abstract transfer function for each instruction
type. Given an abstract state, it updates the abstract state according to the semantics of each
instruction. The abstract interpreter works on the simple instructions. For complex instructions such as
calls, returns, and pushes, it consults a Policy
instance that implements the context
sensitivity/insensitivity and stack modelling behavior of the particular analysis.
The AbstractInterpreter
works on abstract values and uses abstract arithmetic. It operates on
instances of the AbstractState
class that represent the state of the processor.
- See Also:
AbstractArithmetic
,
MutableState
Methods inherited from class avrora.stack.AbstractArithmetic |
add, and, and, areEqual, areKnown, bitsOf, bitToChar, canon, canon, ceiling, ceiling, commonMask, commonMask, couldBeEqual, couldBeZero, couldBeZero, decrement, floor, floor, getBit, increment, isUnknown, knownBitsOf, knownVal, logicalAnd, maskOf, merge, merge, merge, merge, merge, mergeMask, not, or, or, setBit, shiftLeftOne, shiftLeftOne, subtract, toShortString, toString, toString, xor |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
policy
protected final AnalyzerPolicy policy
program
protected final Program program
oldState
protected StateCache.State oldState
state
protected MutableState state
computeNextStates
public void computeNextStates(StateCache.State os)
- The
computeNextStates()
method computes the possible next states that follow the given
immutable old state and then will push them to the AnalyzerPolicy
instance that was passed
in the constructor to this interpreter instance.
- Parameters:
os
- the immutable old state to compute the next state from
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