MicroInstructions can now be converted to bits
[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         public MicroInstructionParameter getParameter(int index);
10         public void setParameter(int index, MicroInstructionParameter param);
11         
12         /**
13          * @return The amount of {@link Mnemonic}s, the instruction is composed of
14          */
15         public int getSize();
16         
17         public static MicroInstruction create(MicroInstructionParameter... parameters)
18         {
19                 return new StandardMicroInstruction(parameters);
20         }
21         
22         default BitVector toBitVector()
23         {
24                 BitVector vector = BitVector.of();
25                 int size = getSize();
26                 for(int i = 0; i < size; i++)
27                         vector.concat(getParameter(i).getValue());
28                 return vector;
29         }
30 }