package net.mograsim.machine.mi;
+import net.mograsim.logic.core.types.BitVector;
import net.mograsim.machine.mi.parameters.MicroInstructionParameter;
import net.mograsim.machine.mi.parameters.Mnemonic;
{
return new StandardMicroInstruction(parameters);
}
+
+ default BitVector toBitVector()
+ {
+ BitVector vector = BitVector.of();
+ int size = getSize();
+ for(int i = 0; i < size; i++)
+ vector.concat(getParameter(i).getValue());
+ return vector;
+ }
}
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;
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();