[Next] [Up/Previous]

Alternate Instruction Modes

There is some unused opcode space in the design, due to the recent revision which cut the opcode space required for the shift instructions in half, and which replaced a set of 16-bit instructions that used the scratchpad registers with the short memory-reference instructions.

Unfortunately, the extra space is not enough to allow the area referenced by these instructions to be enlarged from 256 bytes to 512 bytes, which I would have felt to be more reasonable.

However, if the space required by the normal memory-reference instructions was reduced to a quarter of its former value by allowing one to choose whether an instruction let you choose its destination register (if not, register 0 would be used) or if it was indexed, instead of always being able to do both, then the short memory-reference instructions could use a 1,024-byte area, with space made available for conventional memory-reference instructions by not allowing the less commonly-used unnormalized floating-point instructions in the short memory-reference form:

These considerations led to the development of Compact Mode as an alternate mode of operation for the computer, to allow short programs to be more compact, with a higher proportion of their instructions being only 16 bits long.

Reducing the amount of opcode space in half used by the shift instructions also meant that some opcode space, adequate for allowing such important additional instructions as subroutine jump and conditional jump instructions, would be available while retaining 16-bit shift instructions (and instructions related to them, including the instructions used to switch between modes, which it is helpful to have universal for all modes) even if the basic memory-reference instructions went back to their original simple form, not using the technique of exploiting operand alignment to reduce opcode space requirements.

This was the basis on which Simple Mode was designed. While its obvious practical benefits are not as great as those of Compact Mode, since compact encoding of instructions that have unaligned operands is usually of limited use, code generation may be simplified, and, as it also allows the normal short memory-reference instructions to be compatible with Subdivided Double operation and related modes, it acquires significant practical value when that feature is used.

Further modes were designed which were made to conform closely to either the normal mode or to Compact Mode in form, so that the additional instructions to be described in later sections would not need to be given modified opcodes.

Scratchpad Mode attempted to provide RISC-like capabilities, so that more extensive use could be made of the supplementary registers to reduce the need for memory accesses. Local Mode tries to take this further, by providing instructions which perform calculations between any of the eight basic registers as destination and any supplementary register as the source.

Condensed Mode attempts to combine as many of the benefits of Compact Mode, Scratchpad Mode, and Local Mode as possible into a single mode.


[Next] [Up/Previous]