1 package net.mograsim.machine.mi.parameters;
3 import static net.mograsim.logic.core.types.Bit.U;
5 import java.math.BigInteger;
7 import net.mograsim.logic.core.types.BitVector;
9 public final class IntegerImmediate implements MicroInstructionParameter
11 private IntegerClassification owner;
12 private BitVector value;
15 * <code>value == null</code> means a vector consisting only of X
17 public IntegerImmediate(IntegerClassification owner, BigInteger value, int bits)
19 this(owner, value == null ? BitVector.of(U, bits) : BitVector.from(value, bits));
22 public IntegerImmediate(IntegerClassification owner, BitVector value)
29 public BitVector getValue()
35 public ParameterType getType()
37 return ParameterType.INTEGER_IMMEDIATE;
45 result = prime * result + ((value == null) ? 0 : value.hashCode());
50 public boolean equals(Object obj)
56 if (!(obj instanceof IntegerImmediate))
58 IntegerImmediate other = (IntegerImmediate) obj;
61 if (other.value != null)
63 } else if (!value.equals(other.value))
70 return value.equals(BitVector.of(U, value.length()));
74 * @return The value of this IntegerImmediate as an unsigned BigInteger, or null, if the value is X.
76 public BigInteger getValueAsBigInteger()
78 return isX() ? null : value.getUnsignedValue();
82 public String toString()
84 return isX() ? "X" : getValueAsBigInteger().toString();
88 public boolean isDefault()
90 return equals(owner.getDefault());