|
Simple Machine | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjava.util.Observable
machine.AbstractCPU
arch.sm213.machine.AbstractSM213CPU
public abstract class AbstractSM213CPU
Infrastructure for executing an SM213 CPU implementation.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class machine.AbstractCPU |
|---|
AbstractCPU.ImplementationException, AbstractCPU.InternalState, AbstractCPU.InvalidInstructionException, AbstractCPU.MachineHaltException |
| Field Summary | |
|---|---|
protected Register.Port |
insOp0
Operand 0. |
protected Register.Port |
insOp1
Operand 1. |
protected Register.Port |
insOp2
Operand 2. |
protected Register.Port |
insOpCode
Opcode. |
protected Register.Port |
insOpExt
Extended operand (extra 4 bytes). |
protected Register.Port |
insOpImm
Immediate-value operand. |
protected Register.Port |
instruction
Value of current instruction (in its entirety). |
protected Register.Port |
pc
Program counter (address of next instruction). |
| Fields inherited from class machine.AbstractCPU |
|---|
is, mem, reg |
| Constructor Summary | |
|---|---|
AbstractSM213CPU(String name,
AbstractMainMemory memory)
Create a new CPU. |
|
| Method Summary | |
|---|---|
protected void |
cycle()
Compute one cycle of the SM213 CPU |
protected abstract void |
execute()
Execute instruction currently loaded in processorState registers. |
protected abstract void |
fetch()
Fetch next instruction from memory into CPU processorState registers. |
void |
setPC(int aPC)
Set PC. |
| Methods inherited from class machine.AbstractCPU |
|---|
getMainMemory, getName, getPC, getProcessorState, getRegisterFile, isInterrupt, newInstance, start, triggerInterrupt |
| Methods inherited from class java.util.Observable |
|---|
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected Register.Port pc
protected Register.Port instruction
protected Register.Port insOpCode
protected Register.Port insOp0
protected Register.Port insOp1
protected Register.Port insOp2
protected Register.Port insOpImm
protected Register.Port insOpExt
| Constructor Detail |
|---|
public AbstractSM213CPU(String name,
AbstractMainMemory memory)
name - fully-qualified name of CPU implementation.memory - main memory used by CPU.| Method Detail |
|---|
protected void cycle()
throws AbstractCPU.InvalidInstructionException,
AbstractCPU.MachineHaltException,
AbstractMainMemory.InvalidAddressException
cycle in class AbstractCPUAbstractCPU.InvalidInstructionException - attempted to execute an invalid instruction.
AbstractCPU.MachineHaltException - halt instruction executed.
AbstractMainMemory.InvalidAddressException - attempted to execute an instruction that accesses an invalid memory address.public void setPC(int aPC)
setPC in class AbstractCPUaPC - New memory address for PC.
protected abstract void fetch()
throws AbstractMainMemory.InvalidAddressException
AbstractMainMemory.InvalidAddressException - Program counter stores an invalid memory address for fetching a new instruction.
protected abstract void execute()
throws AbstractCPU.InvalidInstructionException,
AbstractCPU.MachineHaltException,
RegisterSet.InvalidRegisterNumberException,
AbstractMainMemory.InvalidAddressException
AbstractCPU.InvalidInstructionException - instruction is invalid.
AbstractCPU.MachineHaltException - instruction is the halt instruction.
RegisterSet.InvalidRegisterNumberException - instruction encodes an invalid register number.
AbstractMainMemory.InvalidAddressException - instruction encodes an invalid memory address.
|
Simple Machine | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||