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