Removed unneccessary clock input for memory components
[Mograsim.git] / net.mograsim.machine / src / net / mograsim / machine / mi / MicroInstructionDefinition.java
index 229c761..b9cd2ef 100644 (file)
@@ -1,7 +1,10 @@
 package net.mograsim.machine.mi;
 
 import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.Optional;
 
+import net.mograsim.logic.core.types.Bit;
 import net.mograsim.machine.mi.parameters.IntegerClassification;
 import net.mograsim.machine.mi.parameters.IntegerImmediate;
 import net.mograsim.machine.mi.parameters.MicroInstructionParameter;
@@ -30,6 +33,14 @@ public interface MicroInstructionDefinition
                return getParameterClassifications().length;
        }
        
+       /**
+        * @return The amount of {@link Bit}s in a {@link MicroInstruction} that follows this definition.
+        */
+       public default int sizeInBits()
+       {
+               return Arrays.stream(getParameterClassifications()).mapToInt(e -> e.getExpectedBits()).reduce(0, (a, b) -> a + b);
+       }
+       
        public default MicroInstruction createDefaultInstruction()
        {
                int size = size();
@@ -56,9 +67,6 @@ public interface MicroInstructionDefinition
                }
                return new StandardMicroInstruction(params);
        }
-       
-       public static MicroInstructionDefinition create(ParameterClassification... classes)
-       {
-               return new StandardMicroInstructionDefinition(classes);
-       }
+
+       public Optional<String> getParameterDescription(int index);
 }
\ No newline at end of file