projects
/
Mograsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed mnemonic X to use BitVector X; added X for integer immediates
[Mograsim.git]
/
plugins
/
net.mograsim.machine
/
src
/
net
/
mograsim
/
machine
/
mi
/
parameters
/
IntegerImmediate.java
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
0194766
..
dea11d4
100644
(file)
--- 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;
package net.mograsim.machine.mi.parameters;
+import static net.mograsim.logic.core.types.Bit.X;
+
import java.math.BigInteger;
import net.mograsim.logic.core.types.BitVector;
public final class IntegerImmediate implements MicroInstructionParameter
{
import java.math.BigInteger;
import net.mograsim.logic.core.types.BitVector;
public final class IntegerImmediate implements MicroInstructionParameter
{
+ private IntegerClassification owner;
private BitVector value;
private BitVector value;
- public IntegerImmediate(BigInteger value, int bits)
+ /**
+ * <code>value == null</code> 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(X, bits) : BitVector.from(value, bits)
);
}
}
- public IntegerImmediate(BitVector value)
+ public IntegerImmediate(
IntegerClassification owner,
BitVector value)
{
{
+ this.owner = owner;
this.value = value;
}
this.value = value;
}
@@
-58,23
+65,28
@@
public final class IntegerImmediate implements MicroInstructionParameter
return true;
}
return true;
}
+ public boolean isX()
+ {
+ return value.equals(BitVector.of(X, 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()
{
*/
public BigInteger getValueAsBigInteger()
{
- return value.getUnsignedValue();
+ return
isX() ? null :
value.getUnsignedValue();
}
@Override
public String toString()
{
}
@Override
public String toString()
{
- return getValueAsBigInteger().toString();
+ return
isX() ? "X" :
getValueAsBigInteger().toString();
}
@Override
public boolean isDefault()
{
}
@Override
public boolean isDefault()
{
- return
value.getSignedValueLong() == 0
;
+ return
equals(owner.getDefault())
;
}
}
}
}