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, 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 StateSpace.State oldState
state
protected MutableState state
computeNextStates
public void computeNextStates(StateSpace.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