Changed mnemonic X to use BitVector X; added X for integer immediates
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / mi / parameters / BooleanClassification.java
1 package net.mograsim.machine.mi.parameters;
2
3 import static net.mograsim.logic.core.types.BitVector.SINGLE_0;
4 import static net.mograsim.logic.core.types.BitVector.SINGLE_1;
5 import static net.mograsim.logic.core.types.BitVector.SINGLE_X;
6
7 import net.mograsim.machine.mi.parameters.MicroInstructionParameter.ParameterType;
8
9 public class BooleanClassification extends MnemonicFamily
10 {
11         String trueName, falseName;
12
13         public BooleanClassification(boolean defaultValue, String trueName, String falseName)
14         {
15                 super(defaultValue ? trueName : falseName, new MnemonicPair("X", SINGLE_X), new MnemonicPair(trueName, SINGLE_1),
16                                 new MnemonicPair(falseName, SINGLE_0));
17                 this.trueName = trueName;
18                 this.falseName = falseName;
19         }
20
21         public BooleanClassification(String trueName, String falseName)
22         {
23                 super("X", new MnemonicPair("X", SINGLE_X), new MnemonicPair(trueName, SINGLE_1), new MnemonicPair(falseName, SINGLE_0));
24                 this.trueName = trueName;
25                 this.falseName = falseName;
26         }
27
28         public Mnemonic get(boolean value)
29         {
30                 return get(value ? trueName : falseName);
31         }
32
33         @Override
34         public ParameterType getExpectedType()
35         {
36                 return ParameterType.BOOLEAN_IMMEDIATE;
37         }
38
39         @Override
40         public int getExpectedBits()
41         {
42                 return 1;
43         }
44 }