Changed mnemonic X to use BitVector X; added X for integer immediates
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / mi / parameters / MnemonicFamily.java
index 445485b..fbdaf76 100644 (file)
@@ -1,13 +1,15 @@
 package net.mograsim.machine.mi.parameters;
 
+import static net.mograsim.logic.core.types.Bit.X;
+
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
-import net.mograsim.logic.core.types.Bit;
 import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.machine.MachineException;
 import net.mograsim.machine.mi.parameters.MicroInstructionParameter.ParameterType;
 
 public class MnemonicFamily implements ParameterClassification
@@ -20,12 +22,15 @@ public class MnemonicFamily implements ParameterClassification
 
        MnemonicFamily(String defaultValueName, MnemonicPair... values)
        {
+               if (values.length == 0)
+                       throw new MachineException("Mnemonics must not be empty!");
                this.values = new Mnemonic[values.length];
                this.stringValues = new String[values.length];
 
                setup(values);
 
-               int defaultValueIndex = -1;
+               // if no valid defaultValue is specified, pick first value as default
+               int defaultValueIndex = 0;
                for (int i = 0; i < values.length; i++)
                        if (stringValues[i].equals(defaultValueName))
                        {
@@ -177,7 +182,7 @@ public class MnemonicFamily implements ParameterClassification
 
                public MnemonicFamilyBuilder addX()
                {
-                       pairs.add(new MnemonicPair("X", BitVector.of(Bit.ZERO, bits)));
+                       pairs.add(new MnemonicPair("X", BitVector.of(X, bits)));
                        return this;
                }