+ /** the natural word width of this machine */
+ public abstract int getWordWidth();
+
+ /** the width of the immediate field in the "shift data latch" instruction */
+ public abstract int getShiftWidth();
+
+ /** the width of the immediate field in the "set data latch" instruction */
+ public abstract int getSetWidth();
+
+ /** FIXME: this will soon become a property of individual memories rather than the entire Fleet */
+ public abstract int getMaxCodeBagSize();
+
+ /** FIXME: this will soon become a property of individual memories rather than the entire Fleet */
+ public abstract BitVector makeCodeBagDescriptor(long offset, long length);
+
+ /**
+ * Encodes an instruction as a BitVector
+ * @instruction The instruction to encode
+ * @dispatchFrom The dock from which the instruction being written is to be dispatched (required for encoding)
+ */
+ public abstract BitVector encodeInstruction(Instruction instruction, Dock dispatchFrom);
+
+ /**
+ * Decodes an instruction from a BitVector
+ * @instruction The instruction to decode
+ * @dispatchFrom The dock from which the instructions being read are to be dispatched (required for decoding)
+ */
+ public abstract Instruction decodeInstruction(BitVector instruction, Dock dispatchFrom);