X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2FMicroInstructionDefinition.java;h=b9cd2ef719f43c59f45b5711090dbb2a9fd0a573;hb=88e1b4382640ee4e907e06572fe6794bc925f344;hp=0ba3b4133968dd08bf364b270cfc21dd3eda0bde;hpb=6f7a567274818eb91c38794155043a51fac4491c;p=Mograsim.git diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionDefinition.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionDefinition.java index 0ba3b413..b9cd2ef7 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionDefinition.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionDefinition.java @@ -1,8 +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; @@ -31,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();