X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2Fparameters%2FIntegerImmediate.java;fp=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2Fparameters%2FIntegerImmediate.java;h=419602c69df1ce572f9178da8e3e974778c559f1;hb=7d05144c25daa53e60fc9ed9fd503546a86567f8;hp=0000000000000000000000000000000000000000;hpb=8bed58cd47f4e53a0a83e066d38864aa6875502f;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 new file mode 100644 index 00000000..419602c6 --- /dev/null +++ b/plugins/net.mograsim.machine/src/net/mograsim/machine/mi/parameters/IntegerImmediate.java @@ -0,0 +1,74 @@ +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(); + } +}