Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## avrora.sim
Interface State

All Superinterfaces:
  IORegisterConstants

All Known Implementing Classes:
  BaseInterpreter

public interface State
extends IORegisterConstants

The `State` class represents the state of the simulator, including the contents of registers and memory.

Nested Class Summary
`static interface` | `State.IOReg` The `IOReg` interface models the behavior of an IO register.
`static class` | `State.RWIOReg` The `RWIOReg` class is an implementation of an IO register that has the simple, default behavior of being able to read and write just as a general purpose register or byte in SRAM.

Field Summary
`static State.IOReg` | `RESERVED` The `RESERVED` field of the state class represents an instance of the `IOReg` interface that will not allow any writes to this register to occur.

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`

Method Summary
`long` | `getCycles()` The `getCycles()` method returns the clock cycle count recorded so far in the simulation.
`byte` | `getDataByte(int address)` The `getDataByte()` method reads a byte value from the data memory (SRAM) at the specified address.
`boolean` | `getFlag_C()` The `getFlag_C()` method returns the current value of the C bit in the status register as a boolean.
`boolean` | `getFlag_H()` The `getFlag_H()` method returns the current value of the H bit in the status register as a boolean.
`boolean` | `getFlag_I()` The `getFlag_I()` method returns the current value of the I bit in the status register as a boolean.
`boolean` | `getFlag_N()` The `getFlag_N()` method returns the current value of the N bit in the status register as a boolean.
`boolean` | `getFlag_S()` The `getFlag_S()` method returns the current value of the S bit in the status register as a boolean.
`boolean` | `getFlag_T()` The `getFlag_T()` method returns the current value of the T bit in the status register as a boolean.
`boolean` | `getFlag_V()` The `getFlag_V()` method returns the current value of the V bit in the status register as a boolean.
`boolean` | `getFlag_Z()` The `getFlag_Z()` method returns the current value of the Z bit in the status register as a boolean.
`Instr` | `getInstr(int address)` The `getInstr()` can be used to retrieve a reference to the `Instr` object representing the instruction at the specified program address.
`State.IOReg` | `getIOReg(int ioreg)` The `getIOReg()` method is used to retrieve a reference to the actual `IOReg` instance stored internally in the state.
`byte` | `getIORegisterByte(int ioreg)` The `getIORegisterByte()` method reads the value of an IO register.
`int` | `getPC()` The `getPC()` retrieves the current program counter.
`long` | `getPostedInterrupts()` The `getPostedInterrupts()` method returns a mask that represents all interrupts that are currently pending (meaning they are ready to be fired in priority order as long as the I flag is on).
`byte` | `getProgramByte(int address)` The `getProgramByte()` method reads a byte value from the program (Flash) memory.
`byte` | `getRegisterByte(Register reg)` Read a general purpose register's current value as a byte.
`int` | `getRegisterUnsigned(Register reg)` Read a general purpose register's current value as an integer, without any sign extension.
`int` | `getRegisterWord(Register reg)` Read a general purpose register pair as an unsigned word.
`int` | `getSP()` The `getSP()` method reads the current value of the stack pointer.
`byte` | `getSREG()` The `getSREG()` method reads the value of the status register.
`byte` | `getStackByte()` The `getStackByte()` method reads a byte from the address specified by SP+1.
`boolean` | `isSleeping()` The `isSleeping()` method returns whether the simulator is currently in a sleep mode.

Field Detail

### RESERVED

    public static final State.IOReg RESERVED

  The `RESERVED` field of the state class represents an instance of the `IOReg` interface that will not allow any writes to this register to occur. These reserved IO registers are specified in the hardware manuals.

Method Detail

### getPostedInterrupts

    public long getPostedInterrupts()

  The `getPostedInterrupts()` method returns a mask that represents all interrupts that are currently pending (meaning they are ready to be fired in priority order as long as the I flag is on).

  Returns:
    a mask representing the interrupts which are posted for processing

### getRegisterByte

    public byte getRegisterByte(Register reg)

  Read a general purpose register's current value as a byte.

  Parameters:
    `reg` - the register to read
  Returns:
    the current value of the register

### getRegisterUnsigned

    public int getRegisterUnsigned(Register reg)

  Read a general purpose register's current value as an integer, without any sign extension.

  Parameters:
    `reg` - the register to read
  Returns:
    the current unsigned value of the register

### getRegisterWord

    public int getRegisterWord(Register reg)

  Read a general purpose register pair as an unsigned word. This method will read the value of the specified register and the value of the next register in numerical order and return the two values combined as an unsigned integer The specified register should be less than r31, because r32 (the next register) does not exist.

  Parameters:
    `reg` - the low register of the pair to read
  Returns:
    the current unsigned word value of the register pair

### getSREG

    public byte getSREG()

  The `getSREG()` method reads the value of the status register. The status register contains the I, T, H, S, V, N, Z, and C flags, in order from highest-order to lowest-order.

  Returns:
    the value of the status register as a byte.

### getFlag_I

    public boolean getFlag_I()

  The `getFlag_I()` method returns the current value of the I bit in the status register as a boolean.

  Returns:
    the value of the flag

### getFlag_T

    public boolean getFlag_T()

  The `getFlag_T()` method returns the current value of the T bit in the status register as a boolean.

  Returns:
    the value of the flag

### getFlag_H

    public boolean getFlag_H()

  The `getFlag_H()` method returns the current value of the H bit in the status register as a boolean.

  Returns:
    the value of the flag

### getFlag_S

    public boolean getFlag_S()

  The `getFlag_S()` method returns the current value of the S bit in the status register as a boolean.

  Returns:
    the value of the flag

### getFlag_V

    public boolean getFlag_V()

  The `getFlag_V()` method returns the current value of the V bit in the status register as a boolean.

  Returns:
    the value of the flag

### getFlag_N

    public boolean getFlag_N()

  The `getFlag_N()` method returns the current value of the N bit in the status register as a boolean.

  Returns:
    the value of the flag

### getFlag_Z

    public boolean getFlag_Z()

  The `getFlag_Z()` method returns the current value of the Z bit in the status register as a boolean.

  Returns:
    the value of the flag

### getFlag_C

    public boolean getFlag_C()

  The `getFlag_C()` method returns the current value of the C bit in the status register as a boolean.

  Returns:
    the value of the flag

### getStackByte

    public byte getStackByte()

  The `getStackByte()` method reads a byte from the address specified by SP+1. This method should not be called with an empty stack, as it will cause an exception consistent with trying to read non-existent memory.

  Returns:
    the value on the top of the stack

### getSP

    public int getSP()

  The `getSP()` method reads the current value of the stack pointer. Since the stack pointer is stored in two IO registers, this method will cause the invocation of the `.read()` method on each of the `IOReg` objects that store these values.

  Returns:
    the value of the stack pointer as a byte address

### getPC

    public int getPC()

  The `getPC()` retrieves the current program counter.

  Returns:
    the program counter as a byte address

### getInstr

    public Instr getInstr(int address)

  The `getInstr()` can be used to retrieve a reference to the `Instr` object representing the instruction at the specified program address. Care should be taken that the address in program memory specified does not contain data. This is because Avrora does have a functioning disassembler and assumes that the `Instr` objects for each instruction in the program are known a priori.

  Parameters:
    `address` - the byte address from which to read the instruction
  Returns:
    a reference to the `Instr` object representing the instruction at that address in the program

### getDataByte

    public byte getDataByte(int address)

  The `getDataByte()` method reads a byte value from the data memory (SRAM) at the specified address.

  Parameters:
    `address` - the byte address to read
  Returns:
    the value of the data memory at the specified address
  Throws:
    `java.lang.ArrayIndexOutOfBoundsException` - if the specified address is not the valid memory range

### getProgramByte

    public byte getProgramByte(int address)

  The `getProgramByte()` method reads a byte value from the program (Flash) memory. The flash memory generally stores read-only values and the instructions of the program. Care should be taken that the program memory at the specified address does not contain an instruction. This is because, in general, programs should not read instructions as data, and secondly, because no assembler is present in Avrora and therefore the actual byte value of an instruction may not be known.

  Parameters:
    `address` - the byte address at which to read
  Returns:
    the byte value of the program memory at the specified address
  Throws:
    `java.lang.ArrayIndexOutOfBoundsException` - if the specified address is not the valid program memory range

### getIORegisterByte

    public byte getIORegisterByte(int ioreg)

  The `getIORegisterByte()` method reads the value of an IO register. Invocation of this method causes an invocatiobn of the `.read()` method on the corresponding internal `IOReg` object, and its value returned.

  Parameters:
    `ioreg` - the IO register number
  Returns:
    the value of the IO register

### getIOReg

    public State.IOReg getIOReg(int ioreg)

  The `getIOReg()` method is used to retrieve a reference to the actual `IOReg` instance stored internally in the state. This is generally only used in the simulator and device implementations, and clients should probably not call this memory directly.

  Parameters:
    `ioreg` - the IO register number to retrieve
  Returns:
    a reference to the `IOReg` instance of the specified IO register

### getCycles

    public long getCycles()

  The `getCycles()` method returns the clock cycle count recorded so far in the simulation.

  Returns:
    the number of clock cycles elapsed in the simulation

### isSleeping

    public boolean isSleeping()

  The `isSleeping()` method returns whether the simulator is currently in a sleep mode.

  Returns:
    true if the simulator is in a sleep mode; false otherwise

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD