X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2FMicroInstruction.java;h=d45c27723e9d7a055ba756b98ab8dd83f308a05c;hb=8bed58cd47f4e53a0a83e066d38864aa6875502f;hp=07a15d2cf61c4856e2e7db1e3d16ce672e2c1618;hpb=a89919ed17e728953766d9d617e7db86fcf315ee;p=Mograsim.git diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java index 07a15d2c..d45c2772 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java @@ -1,20 +1,32 @@ 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; -public interface MicroInstruction { - +public interface MicroInstruction +{ + public MicroInstructionParameter getParameter(int index); + public void setParameter(int index, MicroInstructionParameter param); - + /** * @return The amount of {@link Mnemonic}s, the instruction is composed of */ public int getSize(); - - public static MicroInstruction create(MicroInstructionParameter... parameters) + + public static MicroInstruction create(Runnable updateCallback, MicroInstructionParameter... parameters) + { + return new StandardMicroInstruction(updateCallback, parameters); + } + + default BitVector toBitVector() { - return new StandardMicroInstruction(parameters); + BitVector vector = BitVector.of(); + int size = getSize(); + for (int i = 0; i < size; i++) + vector = vector.concat(getParameter(i).getValue()); + return vector; } }