--- /dev/null
+package net.mograsim.machine.mi.parameters;
+
+import java.math.BigInteger;
+
+import net.mograsim.logic.core.types.BitVector;
+
+public final class IntegerImmediate implements MicroInstructionParameter
+{
+ private BitVector value;
+
+ public IntegerImmediate(BigInteger value, int bits)
+ {
+ this.value = BitVector.from(value, bits);
+ }
+
+ public IntegerImmediate(BitVector value)
+ {
+ this.value = value;
+ }
+
+ @Override
+ public BitVector getValue()
+ {
+ return value;
+ }
+
+ @Override
+ public ParameterType getType()
+ {
+ return ParameterType.INTEGER_IMMEDIATE;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((value == null) ? 0 : value.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (!(obj instanceof IntegerImmediate))
+ return false;
+ IntegerImmediate other = (IntegerImmediate) obj;
+ if (value == null)
+ {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
+
+ /**
+ * @return The value of this IntegerImmediate as an unsigned BigInteger
+ */
+ public BigInteger getValueAsBigInteger()
+ {
+ return value.getUnsignedValue();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getValueAsBigInteger().toString();
+ }
+}