Changed mnemonic X to use BitVector X; added X for integer immediates
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / mi / parameters / IntegerClassification.java
1 package net.mograsim.machine.mi.parameters;
2
3 import java.math.BigInteger;
4
5 import net.mograsim.logic.core.types.BitVector;
6 import net.mograsim.machine.mi.parameters.MicroInstructionParameter.ParameterType;
7
8 public class IntegerClassification implements ParameterClassification
9 {
10         private final int bits;
11         private final IntegerImmediate defaultValue;
12
13         /**
14          * The default value is set to X.
15          */
16         public IntegerClassification(int bits)
17         {
18                 this.bits = bits;
19                 this.defaultValue = new IntegerImmediate(this, null, bits);
20         }
21
22         public IntegerClassification(int defaultValue, int bits)
23         {
24                 this.bits = bits;
25                 this.defaultValue = new IntegerImmediate(this, BitVector.from(defaultValue, bits));
26         }
27
28         @Override
29         public ParameterType getExpectedType()
30         {
31                 return ParameterType.INTEGER_IMMEDIATE;
32         }
33
34         @Override
35         public int getExpectedBits()
36         {
37                 return bits;
38         }
39
40         @Override
41         public IntegerImmediate parse(String toParse)
42         {
43                 return new IntegerImmediate(this, toParse.equals("X") ? null : new BigInteger(toParse), bits);
44         }
45
46         @Override
47         public MicroInstructionParameter getDefault()
48         {
49                 return defaultValue;
50         }
51 }