avrora.sim
Class Simulator

java.lang.Object
  extended byavrora.sim.Simulator
All Implemented Interfaces:
InstrVisitor, IORegisterConstants
Direct Known Subclasses:
ATMega128L.SimImpl

public abstract class Simulator
extends java.lang.Object
implements InstrVisitor, IORegisterConstants

The Simulator class implements a full processor simulator for the AVR instruction set. It is the base class of specific implementations that implement processor-specific behavior.


Nested Class Summary
static class Simulator.BreakPointException
          The BreakPointException is an exception that is thrown by the simulator before it executes an instruction which has a breakpoint.
static class Simulator.ClockCycleTimeout
          The InstructionCountTimeout class is a probe that simply counts down and throws an exception when the count reaches zero.
 class Simulator.FlagRegister
           
static class Simulator.InstructionCountTimeout
          The InstructionCountTimeout class is a probe that simply counts down and throws a TimeoutException when the count reaches zero.
static interface Simulator.Interrupt
          The Interrupt interface represents the behavior of an interrupt (how it manipulates the state of the processor) when it is posted and when it is triggered (handler is executed by the processor).
 class Simulator.MaskableInterrupt
           
 class Simulator.MaskRegister
           
static interface Simulator.MemoryProbe
           
static interface Simulator.Probe
          The Simulator.Probe interface represents a programmer-defined probe that can be inserted at particular instructions or at every instruction.
static class Simulator.TimeoutException
          The TimeoutException is thrown by the simulator when a timeout reaches zero.
static interface Simulator.Trigger
          The Simulator.Trigger interface represents a trigger that is fired when a timed event occurs within the simulator.
 
Field Summary
protected  MulticastProbe activeProbe
          The activeProbe field stores a reference to a MulticastProbe that contains all of the probes to be fired before and after the main execution runLoop--i.e. before and after every instruction.
protected  int cyclesConsumed
           
protected  DeltaQueue eventQueue
          The eventQueue field stores a reference to the event queue, a delta list of all events to be processed in order.
static Simulator.Interrupt IGNORE
          The IGNORE field stores a reference to a singleton anonymous class that ignores posting and firing of an interrupt.
protected  Simulator.Interrupt[] interrupts
          The interrupts array stores a reference to an Interrupt instance for each of the interrupt vectors supported in the simulator.
protected  boolean justReturnedFromInterrupt
          The justReturnedFromInterrupt field is used internally in maintaining the invariant stated in the hardware manual that at least one instruction following a return from an interrupt is executed before another interrupt can be processed.
static int MAX_INTERRUPTS
          The MAX_INTERRUPTS fields stores the maximum number of interrupt vectors supported by the simulator.
protected  Microcontroller microcontroller
           
protected  int nextPC
          The nextPC field is used internally in maintaining the correct execution order of the instructions.
protected  Program program
          The program field allows descendants of the Simulator class to access the program that is currently loaded in the simulator.
protected  boolean shouldRun
          The shouldRun flag is used internally in the main execution runLoop to implement the correct semantics of start() and stop() to the clients.
protected  boolean sleeping
          The sleeping flag is used internally in the simulator when the microcontroller enters the sleep mode.
protected  State state
          The state field stores a reference to the State object that represents the state of the processor in the simulation.
static Simulator.Probe TRACEPROBE
          The TRACEPROBE field represents a simple probe that prints an instruction to the terminal as it is encountered.
 
Fields inherited from interface avrora.sim.IORegisterConstants
ACSR, ADCH, ADCL, ADCSRA, ADMUX, ASSR, DDRA, DDRB, DDRC, DDRD, DDRE, DDRF, DDRG, EEARH, EEARL, EECR, EEDR, EICRA, EICRB, EIFR, EIMSK, ETIFR, ETIMSK, ICR1H, ICR1L, ICR3H, ICR3L, MCUCR, MCUCSR, NUM_REGS, OCDR, OCR0, OCR1AH, OCR1AL, OCR1BH, OCR1BL, OCR1CH, OCR1CL, OCR2, OCR3AH, OCR3AL, OCR3BH, OCR3BL, OCR3CH, OCR3CL, OSCCAL, PINA, PINB, PINC, PIND, PINE, PINF, PING, PORTA, PORTB, PORTC, PORTD, PORTE, PORTF, PORTG, RAMPZ, SFIOR, SPCR, SPDR, SPH, SPL, SPMCSR, SPSR, SREG, SREG_C, SREG_H, SREG_I, SREG_N, SREG_S, SREG_T, SREG_V, SREG_Z, TCCR0, TCCR1A, TCCR1B, TCCR1C, TCCR2, TCCR3A, TCCR3B, TCCR3C, TCNT0, TCNT1H, TCNT1L, TCNT2, TCNT3H, TCNT3L, TIFR, TIMSK, TWAR, TWBR, TWCR, TWDR, TWSR, UBRR0H, UBRR0L, UBRR1H, UBRR1L, UCSR0A, UCSR0B, UCSR0C, UCSR1A, UCSR1B, UCSR1C, UDR0, UDR1, WDTCR, XDIV, XMCRA, XMCRB
 
Constructor Summary
Simulator(Microcontroller mcu, Program p)
          The constructor creates the internal data structures and initial state of the processor.
 
Method Summary
 PeriodicTrigger addPeriodicTimerEvent(Simulator.Trigger e, long period)
          The addPeriodicTimerEvent() method inserts a trigger into the event queue of the simulator with the specified period.
 void addTimerEvent(Simulator.Trigger e, long cycles)
          The addTimerEvent() method inserts a trigger into the event queue of the simulator with the specified delay in clock cycles.
protected  State constructState()
           
 void forceInterrupt(int num)
          The forceInterrupt() method forces the simulator to post the specified interrupt regardless of the normal source of the interrupt.
protected  int getInterruptVectorAddress(int inum)
          The getInterruptVectorAddress() method computes the location in memory to jump to for the given interrupt number.
 Microcontroller getMicrocontroller()
           
 State getState()
          The getState() retrieves a reference to the current state of the simulation, including the values of all registers, the SRAM, the IO register, the program memory, program counter, etc.
 void insertBreakPoint(int addr)
          The insertBreakPoint() method inserts a breakpoint at the instruction at the specified address.
 void insertProbe(Simulator.Probe p)
          The insertProbe() method allows a probe to be inserted that is executed before and after every instruction that is executed by the simulator
 void insertProbe(Simulator.Probe p, int addr)
          The insertProbe() method allows a probe to be inserted at a particular address in the program that corresponds to an instruction.
 void removeBreakPoint(int addr)
          The removeBreakPoint method removes all breakpoints at the specified instruction at the specified address.
 void removeProbe(Simulator.Probe b)
          The removeProbe() method removes a probe from the global probe table (the probes executed before and after every instruction).
 void removeProbe(Simulator.Probe p, int addr)
          The removeProbe() method removes a probe from the instruction at the specified the address.
 void removeTimerEvent(Simulator.Trigger e)
          The removeTimerEvent() method removes a trigger from the event queue of the simulator.
 void reset()
          The reset() method stops the simulation and resets its state to the default initial state.
 void setWatchPoint(Simulator.MemoryProbe p, int data_addr)
          The setWatchPoint() method allows a probe to be inserted at a memory location.
 void start()
          The start() method begins the simulation.
 void stop()
          The stop() method stops the simulation if it is running.
protected  void triggerInterrupt(int num)
           
 void visit(Instr.ADC i)
           
 void visit(Instr.ADD i)
           
 void visit(Instr.ADIW i)
           
 void visit(Instr.AND i)
           
 void visit(Instr.ANDI i)
           
 void visit(Instr.ASR i)
           
 void visit(Instr.BCLR i)
           
 void visit(Instr.BLD i)
           
 void visit(Instr.BRBC i)
           
 void visit(Instr.BRBS i)
           
 void visit(Instr.BRCC i)
           
 void visit(Instr.BRCS i)
           
 void visit(Instr.BREAK i)
           
 void visit(Instr.BREQ i)
           
 void visit(Instr.BRGE i)
           
 void visit(Instr.BRHC i)
           
 void visit(Instr.BRHS i)
           
 void visit(Instr.BRID i)
           
 void visit(Instr.BRIE i)
           
 void visit(Instr.BRLO i)
           
 void visit(Instr.BRLT i)
           
 void visit(Instr.BRMI i)
           
 void visit(Instr.BRNE i)
           
 void visit(Instr.BRPL i)
           
 void visit(Instr.BRSH i)
           
 void visit(Instr.BRTC i)
           
 void visit(Instr.BRTS i)
           
 void visit(Instr.BRVC i)
           
 void visit(Instr.BRVS i)
           
 void visit(Instr.BSET i)
           
 void visit(Instr.BST i)
           
 void visit(Instr.CALL i)
           
 void visit(Instr.CBI i)
           
 void visit(Instr.CBR i)
           
 void visit(Instr.CLC i)
           
 void visit(Instr.CLH i)
           
 void visit(Instr.CLI i)
           
 void visit(Instr.CLN i)
           
 void visit(Instr.CLR i)
           
 void visit(Instr.CLS i)
           
 void visit(Instr.CLT i)
           
 void visit(Instr.CLV i)
           
 void visit(Instr.CLZ i)
           
 void visit(Instr.COM i)
           
 void visit(Instr.CP i)
           
 void visit(Instr.CPC i)
           
 void visit(Instr.CPI i)
           
 void visit(Instr.CPSE i)
           
 void visit(Instr.DEC i)
           
 void visit(Instr.EICALL i)
           
 void visit(Instr.EIJMP i)
           
 void visit(Instr.ELPM i)
           
 void visit(Instr.ELPMD i)
           
 void visit(Instr.ELPMPI i)
           
 void visit(Instr.EOR i)
           
 void visit(Instr.FMUL i)
           
 void visit(Instr.FMULS i)
           
 void visit(Instr.FMULSU i)
           
 void visit(Instr.ICALL i)
           
 void visit(Instr.IJMP i)
           
 void visit(Instr.IN i)
           
 void visit(Instr.INC i)
           
 void visit(Instr.JMP i)
           
 void visit(Instr.LD i)
           
 void visit(Instr.LDD i)
           
 void visit(Instr.LDI i)
           
 void visit(Instr.LDPD i)
           
 void visit(Instr.LDPI i)
           
 void visit(Instr.LDS i)
           
 void visit(Instr.LPM i)
           
 void visit(Instr.LPMD i)
           
 void visit(Instr.LPMPI i)
           
 void visit(Instr.LSL i)
           
 void visit(Instr.LSR i)
           
 void visit(Instr.MOV i)
           
 void visit(Instr.MOVW i)
           
 void visit(Instr.MUL i)
           
 void visit(Instr.MULS i)
           
 void visit(Instr.MULSU i)
           
 void visit(Instr.NEG i)
           
 void visit(Instr.NOP i)
           
 void visit(Instr.OR i)
           
 void visit(Instr.ORI i)
           
 void visit(Instr.OUT i)
           
 void visit(Instr.POP i)
           
 void visit(Instr.PUSH i)
           
 void visit(Instr.RCALL i)
           
 void visit(Instr.RET i)
           
 void visit(Instr.RETI i)
           
 void visit(Instr.RJMP i)
           
 void visit(Instr.ROL i)
           
 void visit(Instr.ROR i)
           
 void visit(Instr.SBC i)
           
 void visit(Instr.SBCI i)
           
 void visit(Instr.SBI i)
           
 void visit(Instr.SBIC i)
           
 void visit(Instr.SBIS i)
           
 void visit(Instr.SBIW i)
           
 void visit(Instr.SBR i)
           
 void visit(Instr.SBRC i)
           
 void visit(Instr.SBRS i)
           
 void visit(Instr.SEC i)
           
 void visit(Instr.SEH i)
           
 void visit(Instr.SEI i)
           
 void visit(Instr.SEN i)
           
 void visit(Instr.SER i)
           
 void visit(Instr.SES i)
           
 void visit(Instr.SET i)
           
 void visit(Instr.SEV i)
           
 void visit(Instr.SEZ i)
           
 void visit(Instr.SLEEP i)
           
 void visit(Instr.SPM i)
           
 void visit(Instr.ST i)
           
 void visit(Instr.STD i)
           
 void visit(Instr.STPD i)
           
 void visit(Instr.STPI i)
           
 void visit(Instr.STS i)
           
 void visit(Instr.SUB i)
           
 void visit(Instr.SUBI i)
           
 void visit(Instr.SWAP i)
           
 void visit(Instr.TST i)
           
 void visit(Instr.WDR i)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRACEPROBE

public static final Simulator.Probe TRACEPROBE
The TRACEPROBE field represents a simple probe that prints an instruction to the terminal as it is encountered. This is useful for tracing program execution over simulation.


program

protected final Program program
The program field allows descendants of the Simulator class to access the program that is currently loaded in the simulator.


microcontroller

protected final Microcontroller microcontroller

state

protected State state
The state field stores a reference to the State object that represents the state of the processor in the simulation. It is protected to allow subclasses access.


activeProbe

protected final MulticastProbe activeProbe
The activeProbe field stores a reference to a MulticastProbe that contains all of the probes to be fired before and after the main execution runLoop--i.e. before and after every instruction.


shouldRun

protected boolean shouldRun
The shouldRun flag is used internally in the main execution runLoop to implement the correct semantics of start() and stop() to the clients.


sleeping

protected boolean sleeping
The sleeping flag is used internally in the simulator when the microcontroller enters the sleep mode.


justReturnedFromInterrupt

protected boolean justReturnedFromInterrupt
The justReturnedFromInterrupt field is used internally in maintaining the invariant stated in the hardware manual that at least one instruction following a return from an interrupt is executed before another interrupt can be processed.


nextPC

protected int nextPC
The nextPC field is used internally in maintaining the correct execution order of the instructions.


cyclesConsumed

protected int cyclesConsumed

interrupts

protected Simulator.Interrupt[] interrupts
The interrupts array stores a reference to an Interrupt instance for each of the interrupt vectors supported in the simulator.


eventQueue

protected DeltaQueue eventQueue
The eventQueue field stores a reference to the event queue, a delta list of all events to be processed in order.


MAX_INTERRUPTS

public static int MAX_INTERRUPTS
The MAX_INTERRUPTS fields stores the maximum number of interrupt vectors supported by the simulator.


IGNORE

public static final Simulator.Interrupt IGNORE
The IGNORE field stores a reference to a singleton anonymous class that ignores posting and firing of an interrupt. This is the default value for interrupts in a freshly initialized Simulator instance.

Constructor Detail

Simulator

public Simulator(Microcontroller mcu,
                 Program p)
The constructor creates the internal data structures and initial state of the processor. It constructs an instance of the simulator that is ready to have devices attached, IO registers probed, and probes and events inserted. Users should not create Simulator instances directly, but instead should get an instance of the appropriate processor and load the program into it.

Parameters:
p - the program to load into the simulator
Method Detail

getMicrocontroller

public Microcontroller getMicrocontroller()

getState

public State getState()
The getState() retrieves a reference to the current state of the simulation, including the values of all registers, the SRAM, the IO register, the program memory, program counter, etc. This state is mutable.

Returns:
a reference to the current state of the simulation

start

public void start()
The start() method begins the simulation. It causes the simulator to enter a runLoop that executes instructions, firing probes and triggers as it executes. The start() method returns normally when the break AVR instruction is executed, when a BreakPointException is thrown, when a TimeoutException is thrown, or when the stop() method on this simulator instance is called.


stop

public void stop()
The stop() method stops the simulation if it is running. This method can be called from within a probe or trigger or from another thread.


reset

public void reset()
The reset() method stops the simulation and resets its state to the default initial state. Probes inserted in the program are retained. All triggers are removed.


constructState

protected State constructState()

getInterruptVectorAddress

protected int getInterruptVectorAddress(int inum)
The getInterruptVectorAddress() method computes the location in memory to jump to for the given interrupt number. On the Atmega128L, the starting point is the beginning of memory and each interrupt vector slot is 4 bytes. On older architectures, this is not the case, therefore this method has to be implemented according to the specific device being simulated.

Parameters:
inum - the interrupt number
Returns:
the byte address that represents the address in the program to jump to when this interrupt is fired

insertProbe

public void insertProbe(Simulator.Probe p)
The insertProbe() method allows a probe to be inserted that is executed before and after every instruction that is executed by the simulator

Parameters:
p - the probe to insert

insertProbe

public void insertProbe(Simulator.Probe p,
                        int addr)
The insertProbe() method allows a probe to be inserted at a particular address in the program that corresponds to an instruction. The probe is then fired before and after that particular instruction is executed.

Parameters:
p - the probe to insert
addr - the address at which to insert the probe

removeProbe

public void removeProbe(Simulator.Probe b)
The removeProbe() method removes a probe from the global probe table (the probes executed before and after every instruction). The comparison used is reference equality, not .equals().

Parameters:
b - the probe to remove

removeProbe

public void removeProbe(Simulator.Probe p,
                        int addr)
The removeProbe() method removes a probe from the instruction at the specified the address. The comparison used is reference equality, not .equals().

Parameters:
p - the probe to remove
addr - the address from which to remove the probe

insertBreakPoint

public void insertBreakPoint(int addr)
The insertBreakPoint() method inserts a breakpoint at the instruction at the specified address. At most one breakpoint can be inserted at a particular instruction. Subsequent calls to this method would then have no effect for the same address.

Parameters:
addr -

removeBreakPoint

public void removeBreakPoint(int addr)
The removeBreakPoint method removes all breakpoints at the specified instruction at the specified address.

Parameters:
addr -

setWatchPoint

public void setWatchPoint(Simulator.MemoryProbe p,
                          int data_addr)
The setWatchPoint() method allows a probe to be inserted at a memory location. The probe will be executed before every read or write to that memory location.

Parameters:
p - the probe to insert
data_addr - the data address at which to insert the probe

forceInterrupt

public void forceInterrupt(int num)
The forceInterrupt() method forces the simulator to post the specified interrupt regardless of the normal source of the interrupt. If there is a flag register associated with the specified interrupt, then the flag register's value will be set as if the original source of the interrupt (e.g. a timer) had posted the interrupt. As with a normal post of the interrupt, if the interrupt is masked out via a mask register or the master interrupt enable bit, the interrupt will not be delivered. The main reason that this interface exists is for forcing programs to handle interrupts and observe their behavior.

Parameters:
num - the interrupt number to force

triggerInterrupt

protected void triggerInterrupt(int num)

addTimerEvent

public void addTimerEvent(Simulator.Trigger e,
                          long cycles)
The addTimerEvent() method inserts a trigger into the event queue of the simulator with the specified delay in clock cycles. The trigger will then be executed at the future time specified

Parameters:
e - the trigger to be inserted
cycles - the number of cycles in the future at which to trigger

addPeriodicTimerEvent

public PeriodicTrigger addPeriodicTimerEvent(Simulator.Trigger e,
                                             long period)
The addPeriodicTimerEvent() method inserts a trigger into the event queue of the simulator with the specified period. The PeriodicTrigger instance created will continually reinsert the trigger after each firing to achieve predictable periodic behavior.

Parameters:
e - the trigger to insert
period - the period in clock cycles
Returns:
the PeriodicTrigger instance inserted

removeTimerEvent

public void removeTimerEvent(Simulator.Trigger e)
The removeTimerEvent() method removes a trigger from the event queue of the simulator. The comparison used is reference equality, not .equals().

Parameters:
e - the trigger to remove

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