[Next] [Up][Previous]

Compact Mode

In Compact Mode, the register-to-register and memory-reference instructions follow the scheme shown below:

To allow short program modules that use only a limited number of data storage locations for most of their work to be more compact, there are short-format memory-reference instructions that occupy only 16 bits. These instructions always use register 0 (of the appropriate type) as their destination register; addresses are displacements within a 1,024-byte region of memory, to which the contents of base register 0 are taken to point.

As the register-to-register and shift instructions are unchanged, the three-address long vector instructions and various other special features (everything where the first 16 bits of the instruction were from 000000 to 037777) would remain available in this mode. Other special features are no longer available. Note that a few of the operate instructions are available, and some of them are modified so as no longer to have indexing available.

Memory Reference       Register   Short Format
--------------------   ------     ------
0600xx xxxxxx          0000xx     100xxx     SWB    Swap Byte
0610xx xxxxxx          0001xx     102xxx     CB     Compare Byte
0620xx xxxxxx          0002xx     104xxx     LB     Load Byte
0630xx xxxxxx                     106xxx     STB    Store Byte
0640xx xxxxxx          0004xx     110xxx     AB     Add Byte
0650xx xxxxxx          0005xx     112xxx     SB     Subtract Byte

0700xx xxxxxx          0010xx     120xxx     IB     Insert Byte
0710xx xxxxxx          0011xx     122xxx     UCB    Unsigned Compare Byte
0720xx xxxxxx          0012xx     124xxx     ULB    Unsigned Load Byte
0730xx xxxxxx          0013xx     126xxx     XB     XOR Byte
0740xx xxxxxx          0014xx     130xxx     NB     AND Byte
0750xx xxxxxx          0015xx     132xxx     OB     OR Byte

0770xx xxxxxx          0017xx     136xxx     STGB   Store if Greater Byte

0602xx xxxxx0 (xxx0)   0020xx     140xx0     SWH    Swap Halfword
0612xx xxxxx0 (xxx0)   0021xx     142xx0     CH     Compare Halfword
0622xx xxxxx0 (xxx0)   0022xx     144xx0     LH     Load Halfword
0632xx xxxxx0 (xxx0)              146xx0     STH    Store Halfword
0642xx xxxxx0 (xxx0)   0024xx     150xx0     AH     Add Halfword
0652xx xxxxx0 (xxx0)   0025xx     152xx0     SH     Subtract Halfword
0662xx xxxxx0 (xxx0)   0026xx     154xx0     MH     Multiply Halfword
0672xx xxxxx0 (xxx0)   0027xx     156xx0     DH     Divide Halfword

0702xx xxxxx0 (xxx0)   0030xx     160xx0     IH     Insert Halfword
0712xx xxxxx0 (xxx0)   0031xx     162xx0     UCH    Unsigned Compare Halfword
0722xx xxxxx0 (xxx0)   0032xx     164xx0     ULH    Unsigned Load Halfword
0732xx xxxxx0 (xxx0)   0033xx     166xx0     XH     XOR Halfword
0742xx xxxxx0 (xxx0)   0034xx     170xx0     NH     AND Halfword
0752xx xxxxx0 (xxx0)   0035xx     172xx0     OH     OR Halfword
0762xx xxxxx0 (xxx0)   0036xx     174xx0     MEH    Multiply Extensibly Halfword
0772xx xxxxx0 (xxx0)   0037xx     176xx0     DEH    Divide Extensibly Halfword

0602xx xxxxx1 (xx01)   0040xx     140xx1     SW     Swap
0612xx xxxxx1 (xx01)   0041xx     142xx1     C      Compare
0622xx xxxxx1 (xx01)   0042xx     144xx1     L      Load
0632xx xxxxx1 (xx01)              146xx1     ST     Store
0642xx xxxxx1 (xx01)   0044xx     150xx1     A      Add
0652xx xxxxx1 (xx01)   0045xx     152xx1     S      Subtract
0662xx xxxxx1 (xx01)   0046xx     154xx1     M      Multiply
0672xx xxxxx1 (xx01)   0047xx     156xx1     D      Divide

0712xx xxxxx1 (xx01)   0051xx     162xx1     UC     Unsigned Compare

0732xx xxxxx1 (xx01)   0053xx     166xx1     X      XOR
0742xx xxxxx1 (xx01)   0054xx     170xx1     N      AND
0752xx xxxxx1 (xx01)   0055xx     172xx1     O      OR
0762xx xxxxx1 (xx01)   0056xx     174xx1     ME     Multiply Extensibly
0772xx xxxxx1 (xx01)   0057xx     176xx1     DE     Divide Extensibly

0602xx xxxxx3 (x011)   0060xx     140xx3     SWL    Swap Long
0612xx xxxxx3 (x011)   0061xx     142xx3     CL     Compare Long
0622xx xxxxx3 (x011)   0062xx     144xx3     LL     Load Long
0632xx xxxxx3 (x011)              146xx3     STL    Store Long
0642xx xxxxx3 (x011)   0064xx     150xx3     AL     Add Long
0652xx xxxxx3 (x011)   0065xx     152xx3     SL     Subtract Long
0662xx xxxxx3 (x011)   0066xx     154xx3     ML     Multiply Long
0672xx xxxxx3 (x011)   0067xx     156xx3     DL     Divide Long

0712xx xxxxx3 (x011)   0071xx     162xx3     UCL    Unsigned Compare Long

0732xx xxxxx3 (x011)   0073xx     166xx3     XL     XOR Long
0742xx xxxxx3 (x011)   0074xx     170xx3     NL     AND Long
0752xx xxxxx3 (x011)   0075xx     172xx3     OL     OR Long
0762xx xxxxx3 (x011)   0076xx     174xx3     MEL    Multiply Extensibly Long
0772xx xxxxx3 (x011)   0077xx     176xx3     DEL    Divide Extensibly Long

0604xx xxxxx0 (xxx0)   0100xx     040xx0     SWM    Swap Medium
0614xx xxxxx0 (xxx0)   0101xx     042xx0     CM     Compare Medium
0624xx xxxxx0 (xxx0)   0102xx     044xx0     LM     Load Medium
0634xx xxxxx0 (xxx0)              046xx0     STM    Store Medium
0644xx xxxxx0 (xxx0)   0104xx     050xx0     AM     Add Medium
0654xx xxxxx0 (xxx0)   0105xx     052xx0     SM     Subtract Medium
0664xx xxxxx0 (xxx0)   0106xx     054xx0     MM     Multiply Medium
0674xx xxxxx0 (xxx0)   0107xx     056xx0     DM     Divide Medium

0704xx xxxxx0 (xxx0)   0110xx                MEUM   Multiply Extensibly Unnormalized Medium
0714xx xxxxx0 (xxx0)   0111xx                DEUM   Divide Extensibly Unnormalized Medium
0724xx xxxxx0 (xxx0)   0112xx                LUM    Load Unnormalized Medium
0734xx xxxxx0 (xxx0)   0113xx                STUM   Store Unnormalized Medium
0744xx xxxxx0 (xxx0)   0114xx                AUM    Add Unnormalized Medium
0754xx xxxxx0 (xxx0)   0115xx                SUM    Subtract Unnormalized Medium
0764xx xxxxx0 (xxx0)   0116xx                MUM    Multiply Unnormalized Medium
0774xx xxxxx0 (xxx0)   0117xx                DUM    Divide Unnormalized Medium

0604xx xxxxx1 (xx01)   0120xx     040xx1     SWF    Swap Floating
0614xx xxxxx1 (xx01)   0121xx     042xx1     CF     Compare Floating
0624xx xxxxx1 (xx01)   0122xx     044xx1     LF     Load Floating
0634xx xxxxx1 (xx01)              046xx1     STF    Store Floating
0644xx xxxxx1 (xx01)   0124xx     050xx1     AF     Add Floating
0654xx xxxxx1 (xx01)   0125xx     052xx1     SF     Subtract Floating
0664xx xxxxx1 (xx01)   0126xx     054xx1     MF     Multiply Floating
0674xx xxxxx1 (xx01)   0127xx     056xx1     DF     Divide Floating

0704xx xxxxx1 (xx01)   0130xx                MEU    Multiply Extensibly Unnormalized
0714xx xxxxx1 (xx01)   0131xx                DEU    Divide Extensibly Unnormalized
0724xx xxxxx1 (xx01)   0132xx                LU     Load Unnormalized
0734xx xxxxx1 (xx01)   0133xx                STU    Store Unnormalized
0744xx xxxxx1 (xx01)   0134xx                AU     Add Unnormalized
0754xx xxxxx1 (xx01)   0135xx                SU     Subtract Unnormalized
0764xx xxxxx1 (xx01)   0136xx                MU     Multiply Unnormalized
0774xx xxxxx1 (xx01)   0137xx                DU     Divide Unnormalized

0604xx xxxxx3 (x011)   0140xx     040xx3     SWD    Swap Double
0614xx xxxxx3 (x011)   0141xx     042xx3     CD     Compare Double
0624xx xxxxx3 (x011)   0142xx     044xx3     LD     Load Double
0634xx xxxxx3 (x011)              046xx3     STD    Store Double
0644xx xxxxx3 (x011)   0144xx     050xx3     AD     Add Double
0654xx xxxxx3 (x011)   0145xx     052xx3     SD     Subtract Double
0664xx xxxxx3 (x011)   0146xx     054xx3     MD     Multiply Double
0674xx xxxxx3 (x011)   0147xx     056xx3     DD     Divide Double

0704xx xxxxx3 (x011)   0150xx                MEUD   Multiply Extensibly Unnormalized Double
0714xx xxxxx3 (x011)   0151xx                DEUD   Divide Extensibly Unnormalized Double
0724xx xxxxx3 (x011)   0152xx                LUD    Load Unnormalized Double
0734xx xxxxx3 (x011)   0153xx                STUD   Store Unnormalized Double
0744xx xxxxx3 (x011)   0154xx                AUD    Add Unnormalized Double
0754xx xxxxx3 (x011)   0155xx                SUD    Subtract Unnormalized Double
0764xx xxxxx3 (x011)   0156xx                MUD    Multiply Unnormalized Double
0774xx xxxxx3 (x011)   0157xx                DUD    Divide Unnormalized Double

0604xx xxxxx7 (0111)   0160xx     040xx7     SWQ    Swap Quad
0614xx xxxxx7 (0111)   0161xx     042xx7     CQ     Compare Quad
0624xx xxxxx7 (0111)   0162xx     044xx7     LQ     Load Quad
0634xx xxxxx7 (0111)              046xx7     STQ    Store Quad
0644xx xxxxx7 (0111)   0164xx     050xx7     AQ     Add Quad
0654xx xxxxx7 (0111)   0165xx     052xx7     SQ     Subtract Quad
0664xx xxxxx7 (0111)   0166xx     054xx7     MQ     Multiply Quad
0674xx xxxxx7 (0111)   0167xx     056xx7     DQ     Divide Quad

0704xx xxxxx7 (0111)   0170xx                MEUQ   Multiply Extensibly Unnormalized Quad
0714xx xxxxx7 (0111)   0171xx                DEUQ   Divide Extensibly Unnormalized Quad
0724xx xxxxx7 (0111)   0172xx                LUQ    Load Unnormalized Quad
0734xx xxxxx7 (0111)   0173xx                STUQ   Store Unnormalized Quad
0744xx xxxxx7 (0111)   0174xx                AUQ    Add Unnormalized Quad
0754xx xxxxx7 (0111)   0175xx                SUQ    Subtract Unnormalized Quad
0764xx xxxxx7 (0111)   0176xx                MUQ    Multiply Unnormalized Quad
0774xx xxxxx7 (0111)   0177xx                DUQ    Divide Unnormalized Quad

[Next] [Up][Previous]