d45c27723e9d7a055ba756b98ab8dd83f308a05c
[Mograsim.git] / net.mograsim.machine / src / net / mograsim / machine / mi / MicroInstruction.java
1 package net.mograsim.machine.mi;
2
3 import net.mograsim.logic.core.types.BitVector;
4 import net.mograsim.machine.mi.parameters.MicroInstructionParameter;
5 import net.mograsim.machine.mi.parameters.Mnemonic;
6
7 public interface MicroInstruction
8 {
9
10         public MicroInstructionParameter getParameter(int index);
11
12         public void setParameter(int index, MicroInstructionParameter param);
13
14         /**
15          * @return The amount of {@link Mnemonic}s, the instruction is composed of
16          */
17         public int getSize();
18
19         public static MicroInstruction create(Runnable updateCallback, MicroInstructionParameter... parameters)
20         {
21                 return new StandardMicroInstruction(updateCallback, parameters);
22         }
23
24         default BitVector toBitVector()
25         {
26                 BitVector vector = BitVector.of();
27                 int size = getSize();
28                 for (int i = 0; i < size; i++)
29                         vector = vector.concat(getParameter(i).getValue());
30                 return vector;
31         }
32 }