Merge remote-tracking branch 'origin/development' into development
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / Machine.java
1 package net.mograsim.machine;
2
3 import net.mograsim.logic.core.components.CoreClock;
4 import net.mograsim.logic.core.timeline.Timeline;
5 import net.mograsim.logic.core.types.BitVector;
6 import net.mograsim.logic.model.model.LogicModel;
7 import net.mograsim.machine.mi.AssignableMicroInstructionMemory;
8 import net.mograsim.machine.standard.memory.AssignableMainMemory;
9
10 public interface Machine
11 {
12         MachineDefinition getDefinition();
13
14         void reset();
15
16         LogicModel getModel();
17
18         // TODO replace with HLS references
19         CoreClock getClock();
20
21         BitVector getRegister(Register r);
22
23         void setRegister(Register r, BitVector value);
24
25         Timeline getTimeline();
26
27         AssignableMainMemory getMainMemory();
28
29         AssignableMicroInstructionMemory getMicroInstructionMemory();
30
31         void addActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
32
33         void removeActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
34
35         long getActiveMicroInstructionAddress();
36
37         public interface ActiveMicroInstructionChangedListener
38         {
39                 public void instructionChanged(long oldAddress, long newAddress);
40         }
41 }