Implemented some infrastructure for MPROMs
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / MachineDefinition.java
index 02cf375..a379c06 100644 (file)
@@ -1,11 +1,29 @@
 package net.mograsim.machine;
 
-import java.util.Set;
+import java.util.List;
 
+import net.mograsim.machine.mi.MPROMDefinition;
 import net.mograsim.machine.mi.MicroInstructionMemoryDefinition;
+import net.mograsim.machine.registers.Register;
+import net.mograsim.machine.registers.RegisterGroup;
 
 public interface MachineDefinition
 {
+       /**
+        * This returns the MachineDefinitions ID. This must be consistent and coherent with the id in the extension point (Eclipse plugin xml)
+        * providing the definition.
+        * 
+        * @return a human readable, unique id representing the specified machine.
+        * @author Christian Femers
+        */
+       String getId();
+
+       /**
+        * Returns a human-readable description of the machine definition.
+        * 
+        * @author Daniel Kirschten
+        */
+       String getDescription();
 
        /**
         * Creates a new instance of the machine
@@ -24,12 +42,20 @@ public interface MachineDefinition
        ISASchema getISASchema();
 
        /**
-        * Returns a set of all {@link Register}s present in the machine.
+        * Returns a set of all {@link Register}s present in the machine that are not part of a register group.
         * 
         * @return all registers present in the machine.
         * @author Christian Femers
         */
-       Set<Register> getRegisters();
+       List<Register> getUnsortedRegisters();
+
+       /**
+        * Returns a set of all RegisterGroups that the machine contains
+        * 
+        * @return all register groups present in the machine.
+        * @author Christian Femers
+        */
+       List<RegisterGroup> getRegisterGroups();
 
        /**
         * The number of bits used by the machine to address main memory. Note that this should be the number of bits used in the CPU, not a
@@ -56,4 +82,13 @@ public interface MachineDefinition
         */
        MicroInstructionMemoryDefinition getMicroInstructionMemoryDefinition();
 
+       /**
+        * Returns the definition of the machines instruction memory.
+        * 
+        * @return the {@link InstructionMemoryDefinition} that defines the instruction memory.
+        * 
+        * @author Daniel Kirschten
+        */
+       MPROMDefinition getMPROMDefinition();
+
 }