X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2Fparameters%2FIntegerImmediate.java;h=97db7e4a474a989145e2ee9583f4583eff4f3799;hb=f098cd47d06be0cc654532a5fad0e5e89f0ef93c;hp=419602c69df1ce572f9178da8e3e974778c559f1;hpb=58babf45ae7d259a296656451d796dbe601377a4;p=Mograsim.git diff --git a/plugins/net.mograsim.machine/src/net/mograsim/machine/mi/parameters/IntegerImmediate.java b/plugins/net.mograsim.machine/src/net/mograsim/machine/mi/parameters/IntegerImmediate.java index 419602c6..97db7e4a 100644 --- a/plugins/net.mograsim.machine/src/net/mograsim/machine/mi/parameters/IntegerImmediate.java +++ b/plugins/net.mograsim.machine/src/net/mograsim/machine/mi/parameters/IntegerImmediate.java @@ -1,20 +1,27 @@ package net.mograsim.machine.mi.parameters; +import static net.mograsim.logic.core.types.Bit.U; + import java.math.BigInteger; import net.mograsim.logic.core.types.BitVector; public final class IntegerImmediate implements MicroInstructionParameter { + private IntegerClassification owner; private BitVector value; - public IntegerImmediate(BigInteger value, int bits) + /** + * value == null means a vector consisting only of X + */ + public IntegerImmediate(IntegerClassification owner, BigInteger value, int bits) { - this.value = BitVector.from(value, bits); + this(owner, value == null ? BitVector.of(U, bits) : BitVector.from(value, bits)); } - public IntegerImmediate(BitVector value) + public IntegerImmediate(IntegerClassification owner, BitVector value) { + this.owner = owner; this.value = value; } @@ -58,17 +65,28 @@ public final class IntegerImmediate implements MicroInstructionParameter return true; } + public boolean isX() + { + return value.equals(BitVector.of(U, value.length())); + } + /** - * @return The value of this IntegerImmediate as an unsigned BigInteger + * @return The value of this IntegerImmediate as an unsigned BigInteger, or null, if the value is X. */ public BigInteger getValueAsBigInteger() { - return value.getUnsignedValue(); + return isX() ? null : value.getUnsignedValue(); } @Override public String toString() { - return getValueAsBigInteger().toString(); + return isX() ? "X" : getValueAsBigInteger().toString(); + } + + @Override + public boolean isDefault() + { + return equals(owner.getDefault()); } }