- // FIXME: use this more
- private boolean getBit(int bit, long val) { return ((val & (1L << bit)) != 0); }
- private long getSignedField(int highBit, int lowBit, long val) {
- long ret = getField(highBit, lowBit, val);
- if ((ret & (1L << ((highBit-lowBit)+1-1))) != 0)
- ret |= 0xffffffffffffffffL << ((highBit-lowBit)+1);
- return ret;
- }
- private int getIntField(int highBit, int lowBit, long val) {
- if (highBit-lowBit+1 > 32) throw new RuntimeException("too big!");
- return (int)getField(highBit, lowBit, val);
- }
- private long getField(int highBit, int lowBit, long val) {
- long mask = 0xffffffffffffffffL;
- mask = mask << ((highBit-lowBit)+1);
- mask = ~mask;
- mask = mask << lowBit;
- long ret = val & mask;
- ret = ret >> lowBit;
- return ret;
- }
-
- private long doPutField(int highBit, int lowBit, long val) {
- long mask = 0xffffffffffffffffL;
- mask = mask << (highBit-lowBit+1);
- mask = ~mask;
- val = val & mask;
- val = val << lowBit;
- return val;
- }
- private long putField(int highBit, int lowBit, long val) {
- if (val < 0 || val >= (1L << (highBit-lowBit+1)))
- throw new RuntimeException("bitfield width exceeded");
- return doPutField(highBit, lowBit, val);
- }
- private long putSignedField(int highBit, int lowBit, long val) {
- if (val <= (-1L * (1L << (highBit-lowBit+1-1))))
- throw new RuntimeException("bitfield width exceeded");
- if (val >= ( (1L << (highBit-lowBit+1-1))))
- throw new RuntimeException("bitfield width exceeded");
- return doPutField(highBit, lowBit, val);
- }
-
- // FIXME: parameterize stuff in this file
- private static final int WBITS = 37; /* word width */
- private static final int IBITS = 37; /* instruction width */
- private static final int CODEBAG_SIZE_BITS = 6;
- private static final int BENKOBOX_NAME_BITS = 11;
- private static final int COUNT_BITS = 7;
- private static final int OPCODE_BITS = 5;
-