Inst:
TYPE =
MACHINE
DEPENDENT {
Leftmost bits of opcode determine length of instruction.
000 => 1 byte (1 byte traps)
001 => 5 bytes [040B..077B]
01- => 1 byte [100B..177B]
10- => 2 bytes [200B..277B]
11- => 3 bytes [300B..377B]
Leftmost bits of opcode determine possible PC displacement selection.
0------- PC + stack JS
10------ PC + alphaS JB
110----- PC + alphaBetaS JDB and LFC
111----- PC + betaS RJB's and JBB's
One byte traps (system calls, really)
dTrap (000B),
OIformat (1 byte)
dLC0 (20B), dLC1, dLC2, dLC3, dLC4, dLC5, dLC6, dLC7,
OQBformat (5 bytes)
x060B (060B), dDFC, dLIQB, x063B, x064B, x065B, dJ5, dJQB,
OIformat (1 byte)
dOR (100B), dAND, dRX, dBC, dADD, dSUB, dLADD, dLSUB,
dDUP (110B), dDIS, x112B, dEXDIS, dSFC, dSFCI, dRETN, x117B,
x120B (120B), x121B, x122B, x123B, dKFC, x125B, dJ1, dJS,
LRformat (1 byte)
dLR0 (140B), dLR1, dLR2, dLR3, dLR4, dLR5, dLR6, dLR7,
dLR8 (150B), dLR9, dLR10, dLR11, dLR12, dLR13, dLR14, dLR15,
dSR0 (160B), dSR1, dSR2, dSR3, dSR4, dSR5, dSR6, dSR7,
dSR8 (170B), dSR9, dSR10, dSR11, dSR12, dSR13, dSR14, dSR15,
QRformat (2 bytes)
dQOR (200B), dQAND, dQRX, dQBC,
dQADD (204B), dQSUB, dQLADD, dQLSUB,
OBformat (2 bytes)
dALS (210B), dAL, dASL, dAS, dCST, x215B, dRET, dRETK,
dLIP (220B), dSIP, dLIB, x223B, dADDB, dSUBB, dJ2, dJB,
dRB (230B), dWB, dRSB, dWSB, x234B, x235B, x236B, dPSB,
LRBformat (2 bytes)
dLRI0 (240B), dLRI1, dLRI2, dLRI3, dLRI4, dLRI5, dLRI6, dLRI7,
dLRI8 (250B), dLRI9, dLRI10, dLRI11, dLRI12, dLRI13, dLRI14, dLRI15,
dSRI0 (260B), dSRI1, dSRI2, dSRI3, dSRI4, dSRI5, dSRI6, dSRI7,
dSRI8 (270B), dSRI9, dSRI10, dSRI11, dSRI12, dSRI13, dSRI14, dSRI15,
RRformat (3 bytes)
dROR (300B), dRAND, dRRX, dRBC,
dRADD (304B), dRSUB, dRLADD, dRLSUB,
dRXOR (310B), x311B, dRFU, x313B,
dRVADD (314B), dRVSUB, dRUADD, dRUSUB,
ODBformat and LRRBformat (3 bytes)
dLGF (320B), dLFC, dLIDB, x323B,
dADDDB (324B), dSUBDB, dJ3, dJDB,
dRAI (330B), dWAI, dRRI, dWRI,
dIOS (334B), dIOL, dION, x337B,
RJBformat (3 bytes)
x340B (340B), dRJEB, dRJLB, dRJLEB,
x344B (344B), dRJNEB, dRJGEB, dRJGB,
x350B (350B), dRJNEBJ, dRJGEBJ, dRJGBJ,
x354B (354B), dRJEBJ, dRJLBJ, dRJLEBJ,
JBBformat (3 bytes)
dJEBB (360B), dJNEBB, dJEBBJ, dJNEBBJ,
x364B (364B), x365B, x366B, x367B,
ODBformat (3 bytes)
dSHL (370B), dSHR, dSHD, dFSDB,
x374B (374B), x375B, x376B, x377B};
dFirst: Inst = FIRST[Inst];
dLast: Inst = LAST[Inst];