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.standard.memory.AssignableMainMemory;
12 public interface Machine
14 MachineDefinition getDefinition();
18 LogicModel getModel();
20 // TODO replace with HLS references
23 BitVector getRegister(Register r);
25 void setRegister(Register r, BitVector value);
27 void addRegisterListener(Register r, Consumer<BitVector> listener);
29 void removeRegisterListener(Register r, Consumer<BitVector> listener);
31 Timeline getTimeline();
33 AssignableMainMemory getMainMemory();
35 AssignableMicroInstructionMemory getMicroInstructionMemory();
37 void addActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
39 void removeActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
41 long getActiveMicroInstructionAddress();
43 public interface ActiveMicroInstructionChangedListener
45 public void instructionChanged(long oldAddress, long newAddress);