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.logic.model.modeladapter.CoreModelParameters;
10 import net.mograsim.machine.mi.AssignableMPROM;
11 import net.mograsim.machine.mi.AssignableMicroInstructionMemory;
12 import net.mograsim.machine.registers.Register;
14 public interface Machine
16 MachineDefinition getDefinition();
20 LogicModel getModel();
22 // TODO replace with HLS references
25 BitVector getRegister(Register r);
27 void setRegister(Register r, BitVector value);
29 void addRegisterListener(Register r, Consumer<BitVector> listener);
31 void removeRegisterListener(Register r, Consumer<BitVector> listener);
33 Timeline getTimeline();
35 public CoreModelParameters getCoreModelParameters();
37 AssignableMainMemory getMainMemory();
39 AssignableMicroInstructionMemory getMicroInstructionMemory();
41 AssignableMPROM getMPROM();
43 void addActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
45 void removeActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
47 long getActiveMicroInstructionAddress();
49 public interface ActiveMicroInstructionChangedListener
51 public void instructionChanged(long oldAddress, long newAddress);