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=d88a8efb5858ed611b7df98a8029fb7e413a5b04;hpb=d09827f6dc03fa3cded8e996b4ce45fdae3755ca;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 d88a8efb..d45c2772 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java @@ -4,27 +4,29 @@ 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(parameters); + return new StandardMicroInstruction(updateCallback, parameters); } - + default BitVector toBitVector() { BitVector vector = BitVector.of(); int size = getSize(); - for(int i = 0; i < size; i++) - vector.concat(getParameter(i).getValue()); + for (int i = 0; i < size; i++) + vector = vector.concat(getParameter(i).getValue()); return vector; } }