1 package net.mograsim.machine;
3 import java.util.function.Consumer;
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;
13 public interface Machine
15 MachineDefinition getDefinition();
19 LogicModel getModel();
21 // TODO replace with HLS references
24 BitVector getRegister(Register r);
26 void setRegister(Register r, BitVector value);
28 void addRegisterListener(Register r, Consumer<BitVector> listener);
30 void removeRegisterListener(Register r, Consumer<BitVector> listener);
32 Timeline getTimeline();
34 AssignableMainMemory getMainMemory();
36 AssignableMicroInstructionMemory getMicroInstructionMemory();
38 void addActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
40 void removeActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
42 long getActiveMicroInstructionAddress();
44 public interface ActiveMicroInstructionChangedListener
46 public void instructionChanged(long oldAddress, long newAddress);