Trailing-Edge
-
PDP-10 Archives
-
cobol12c
-
opctab.mac
There are 7 other files named opctab.mac in the archive. Click here to see a list.
; UPD ID= 3396 on 2/16/81 at 2:00 PM by NIXON
UNIVERSAL OPCTAB FOR COBOL AND LIBOL - OP CODE TABLE DEFINITION FILE
SEARCH COPYRT
SALL
;COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1977, 1985
;ALL RIGHTS RESERVED.
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;*** NOTA BENE ***
; WHEN EDITING THIS FILE, RECOMPILE AT LEAST THE FOLLOWING MODULES:
; CMNGEN.MAC
; COBOLG.MAC
; COBOLO.MAC
; PMATCH.MAC
;*****************
;EDIT HISTORY
;NAME DATE COMMENTS
;---- ---- --------
;DMN 1-APR-80 [1004] ADD MORE OPCODES FOR ASCII & EBCDIC COLLATING SEQUENCES.
;DMN 2-OCT-78 [562] FIX SIXBIT 6 CHAR FIG-CON COMPARE
;DAW 28-SEP-78 [561] FIX "GO DEPENDING" - /O PROBLEM
;
; THIS FILE CONTAINS THE LIST OF ALL OP CODES USED BY THE
; COBOL COMPILER. EACH OP CODE HAS CERTAIN PROPERTIES, SO
; EACH OP CODE IS DEFINED HERE (IN ONE PLACE) WITH ALL ITS PROPERTIES
; AND A METHOD IS PROVIDED FOR EACH MODULE THAT WISHES TO ACCESS THESE
; PROPERTIES TO EITHER BUILD ITS OWN TABLE, OR SET OF DEFINITIONS,
; OR TO SHARE IT WITH ANOTHER MODULE. SPECIFICALLY, CMNGEN.MAC
; DEFINES THE INTERNAL CODES USED FOR EACH OP CODE; COBOLG AND COBOLO
; BOTH CONTAIN SEPARATE TABLES WITH DIFFERENT PIECES OF INFORMATION
; ABOUT EACH OP CODE. ALL THESE SETS OF DEFINITIONS ARE INTER-RELATED,
; SO THIS FILE KEEPS PHASE ERRORS FROM HAPPENING.
; EACH OP CODE IS FOLLOWED BY A LIST OF PROPERTIES. TO ADD A NEW
; PROPERTY, ADD IT TO EVERY OP CODE. THERE IS NO DEFAULTING MECHANISM
; PROVIDED. EACH BUILDER OF A TABLE NEED ONLY USE THE PROPERTIES FOR
; EACH OP CODE THAT ARE OF INTEREST TO THAT TABLE.
;
; TO INVOKE THE TABLE, GIVE THE TABLE NAME FOLLOWED BY TWO
; OPTIONAL ARGUMENTS. THESE ARE THE NAMES FOR THE TWO TABLES
; (FIRST OP CODE TABLE, AND SECOND OPCODE TABLE)
;
;THE ORDER OF THE ARGUMENTS IN THE %OPCT% MACRO ARE:
;A MNEMONIC NAME FOR LISTING GENERATION
;B INTERNAL OP CODE VALUE
;C INTERNAL MNEMONIC NAME FOR ASYFIL GENERATION
;D ACTUAL OP CODE FOR INSTRUCTION
;E FLAG FOR LISTING A ZERO AC (1 IF LIST)
;F FLAG FOR LISTING A ZERO ADDRESS (1 IF LIST)
;G FLAG FOR LIST RH AS DECIMAL CONSTANT
;H FLAG FOR LISTING RH AS A NEGATIVE NUMBER
;I FLAG FOR INDENTING OP-CODE (1 IF INDENT)
;J IPTAB SKIP BITS FOR INSTRUCTION
;K OPPARE (OPTIMIZER PATTERN RECOGNIZER) ADDRESS (0 IF NONE)
;
;
; ALSO CONTAINED IN THIS MODULE ARE THE DEFINITIONS
; OF ALL THE FIELDS USED BY VARIOUS MODULES IN PHASE O TO ACCESS
; TABLES BUILT FROM THIS OPCTAB, AS WELL AS OTHERS.
SUBTTL THE TABLE OF PDP-10 OP-CODES
DEFINE OPCTAB(T1),<
IFNB <T1>,<
T1: >
XLIST
%OPCT%(MOVE, 000, MOV, 200, 1,1,0,0,0, N.SKIP, MVEPAT )
%OPCT%(MOVEI, 001, MOVEI., 201, 1,1,1,0,0, N.SKIP, MVIPAT )
%OPCT%(MOVEM, 002, MOVEM., 202, 1,1,0,0,0, N.SKIP, MVMOPT )
%OPCT%(MOVM, 003, MOVM., 214, 1,1,0,0,0, N.SKIP, MVMPAT )
%OPCT%(MOVMM, 004, MOVMM., 216, 1,1,0,0,0, N.SKIP, MMMPAT )
%OPCT%(MOVN, 005, MOVN., 210, 1,1,0,0,0, N.SKIP, MOVNPT )
%OPCT%(MOVNI, 006, MOVNI., 211, 1,1,1,0,0, N.SKIP, LODSTR )
%OPCT%(MOVNM, 007, MOVNM., 212, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(MOVS, 010, MOVS., 204, 1,1,0,0,0, N.SKIP, 0 )
%OPCU%(MOVSI, 011, HRLZI., 205, 1,1,0,0,0, N.SKIP, LODSTR )
%OPCT%(MOVSI, 011, MOVSI., 205, 1,1,0,0,0, N.SKIP, LODSTR)
%OPCT%(ADD, 012, AD, 270, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(ADDI, 013, ADDI., 271, 1,1,1,0,0, N.SKIP, 0 )
%OPCT%(ADDM, 014, ADDM., 272, 1,1,0,0,0, N.SKIP, ADMPAT )
%OPCT%(ADDB, 015, ADDB., 273, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(SUB, 016, SUB., 274, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(SUBI, 017, SUBI., 275, 1,1,1,0,0, N.SKIP, SBIPAT )
%OPCT%(SUBM, 020, SUBM., 276, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(MUL, 021, MUL., 224, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(MULI, 022, MULI., 225, 1,1,1,0,0, N.SKIP, 0 )
%OPCT%(IMUL, 023, IMUL., 220, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(IMULI, 024, IMULI., 221, 1,1,1,0,0, N.SKIP, IMIPAT )
%OPCT%(XCT, 025, XCT., 256, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DIV, 026, DIV., 234, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DIVI, 027, DIVI., 235, 1,1,1,0,0, N.SKIP, 0 )
%OPCT%(DIVM, 030, DIVM., 236, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(IDIV, 031, IDIV., 230, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(IDIVI, 032, IDIVI., 231, 1,1,1,0,0, N.SKIP, 0 )
%OPCT%(IDIVM, 033, IDIVM., 232, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FADR, 034, FAD., 144, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FADRM, 035, FADM., 146, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FSBR, 036, FSB., 154, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FSBRM, 037, FSBM., 156, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FMPR, 040, FMP., 164, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FMPRM, 041, FMPM., 166, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FDVR, 042, FDV., 174, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FDVRM, 043, FDVM., 176, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DPB, 044, DPB., 137, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(LDB, 045, LDB., 135, 1,1,0,0,0, N.SKIP, LODSTR )
%OPCT%(IDPB, 046, IDPB., 136, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(ILDB, 047, ILDB., 134, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(AOS, 050, AOS., 350, 0,1,0,0,0, N.SKIP, AOSPAT )
%OPCT%(SOS, 051, SOS., 370, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(SOSGE, 052, SOSGE., 375, 0,1,0,0,0, C.SKIP, SGEPAT )
%OPCT%(SOSLE, 053, SOSLE., 373, 0,1,0,0,0, C.SKIP, SLEPAT )
%OPCU%(CAM, 052, CAM., 310, 0,1,0,0,0, N.SKIP, 0 )
%OPCU%(CAI, 053, CAI., 300, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CAME, 054, CAME., 312, 1,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(CAIE, 055, CAIE., 302, 1,1,1,0,0, C.SKIP, CAIXX )
%OPCT%(CAMG, 056, CAMG., 317, 1,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(CAIG, 057, CAIG., 307, 1,1,1,0,0, C.SKIP, CAIXX )
%OPCT%(CAMGE, 060, CAMGE., 315, 1,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(CAIGE, 061, CAIGE., 305, 1,1,1,0,0, C.SKIP, CAIXX )
%OPCT%(CAML, 062, CAML., 311, 1,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(CAIL, 063, CAIL., 301, 1,1,1,0,0, C.SKIP, CAIXX )
%OPCT%(CAMLE, 064, CAMLE., 313, 1,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(CAILE, 065, CAILE., 303, 1,1,1,0,0, C.SKIP, CAIXX )
%OPCT%(CAMN, 066, CAMN., 316, 1,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(CAIN, 067, CAIN., 306, 1,1,1,0,0, C.SKIP, CAIXX )
%OPCU%(JUMP, 067, JUMP., 320, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(JUMPE, 070, JUMPE., 322, 1,1,0,0,0, N.SKIP, DOTREF )
%OPCT%(JUMPG, 071, JUMPG., 327, 1,1,0,0,0, N.SKIP, DOTREF )
%OPCT%(JUMPGE, 072, JMPGE., 325, 1,1,0,0,0, N.SKIP, DOTREF )
%OPCT%(JUMPL, 073, JUMPL., 321, 1,1,0,0,0, N.SKIP, DOTREF )
%OPCT%(JUMPLE, 074, JMPLE., 323, 1,1,0,0,0, N.SKIP, DOTREF )
%OPCT%(JUMPN, 075, JUMPN., 326, 1,1,0,0,0, N.SKIP, DOTREF )
%OPCT%(JRST, 076, JRST., 254, 0,1,0,0,0, N.SKIP, JRSTXX )
%OPCU%(SKIP, 076, SKIP., 330, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(SKIPE, 077, SKIPE., 332, 0,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(SKIPG, 100, SKIPG., 337, 0,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(SKIPGE, 101, SKPGE., 335, 0,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(SKIPL, 102, SKIPL., 331, 0,1,0,0,0, C.SKIP, SKLPAT )
%OPCT%(SKIPLE, 103, SKPLE., 333, 0,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(SKIPN, 104, SKIPN., 336, 0,1,0,0,0, C.SKIP, CNDSKP )
%OPCT%(SKIPA, 105, SKIPA., 334, 0,0,0,0,0, A.SKIP, SKPA )
%OPCT%(TRNE, 106, TRNE., 602, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TRNN, 107, TRNN., 606, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TLNE, 110, TLNE., 603, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TLNN, 111, TLNN., 607, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(JSA, 112, JSA., 266, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(PUSHJ, 113, PUSHJ., 260, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(BLT, 114, BLT., 251, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(SETZM, 115, SETZM., 402, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(SETOM, 116, SETOM., 476, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(TDCA, 117, TDCA., 654, 1,1,0,0,0, A.SKIP, 0 )
%OPCT%(ANDM, 120, ANDM., 406, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(IORCAM, 121, ORCAM., 456, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRLOI, 122, HRLOI., 525, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRROI, 123, HRROI., 561, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRRI, 124, HRRI., 541, 1,1,0,0,0, N.SKIP, HRRIXX )
%OPCT%(HRRZI, 125, HRRZI., 551, 1,1,0,0,0, N.SKIP, LODSTR )
%OPCT%(SETZB, 126, SETZB., 403, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(ARG, 127, ARG., 320, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(SOJG, 130, SOJG., 367, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(EXCH, 131, EXCH., 250, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(CALLI, 132, CALLI., 047, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(TLZ, 133, TLZ., 621, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(TLO, 134, TLO., 661, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(SETCAM, 135, SETCA., 452, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(SETCMM, 136, SETCM., 462, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(POPJ, 137, POPJ., 263, 1,0,0,0,0, N.SKIP, 0 )
LIST
> ;END OF OPCTAB MACRO
DEFINE OPCTB2(T2),<
IFNB <T2>,<
T2: >
XLIST
%OPCT%(DMOVE, 000, DMOVE., 120, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DMOVN, 001, DMOVN., 121, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DMOVEM, 002, DMOVM., 124, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DMOVNM, 003, DMVNM., 125, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DADD, 004, DADD., 114, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DSUB, 005, DSUB., 115, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DMUL, 006, DMUL., 116, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DDIV, 007, DDIV., 117, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(ASHC, 010, ASHC., 244, 1,1,1,1,0, N.SKIP, ASHCPT )
%OPCT%(HLRZ, 011, HLRZ., 554, 1,1,0,0,0, N.SKIP, LODSTR )
%OPCT%(HRLM, 012, HRLM., 506, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRRZ, 013, HRRZ., 550, 1,1,0,0,0, N.SKIP, LODSTR )
%OPCT%(HRRM, 014, HRRM., 542, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HLLZS, 015, HLLZS., 513, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(HLLOS, 016, HLLOS., 523, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRRZS, 017, HRRZS., 553, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRROS, 020, HRROS., 563, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(FLTR, 021, FLTR., 127, 1,1,0,0,0, N.SKIP, FLTPAT )
%OPCT%(JFCL, 022, JFCL., 255, 0,0,0,0,0, N.SKIP, 0 )
%OPCT%(ASH, 023, ASH., 240, 1,1,1,1,0, N.SKIP, 0 )
%OPCT%(FADRI, 024, FADRI., 145, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FSBRI, 025, FSBRI., 155, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FMPRI, 026, FMPRI., 165, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(FDVRI, 027, FDVRI., 175, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(PUSH, 030, PUSH., 261, 1,1,0,0,0, N.SKIP, PSHPAT )
%OPCT%(POP, 031, POP., 262, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(IBP, 032, IBP., 133, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(ADJBP, 033, ADJBP., 133, 1,1,0,0,0, N.SKIP, ADJPAT )
%OPCT%(LSH, 034, LSH., 242, 1,1,1,1,0, N.SKIP, 0 )
%OPCT%(TLZE, 035, TLZE., 623, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TLZN, 036, TLZN., 627, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TLZA, 037, TLZA., 625, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TRZE, 040, TRZE., 622, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TRZN, 041, TRZN., 626, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TRZA, 042, TRZA., 624, 1,1,0,0,0, A.SKIP, 0 )
%OPCT%(TDNE, 043, TDNE., 612, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TDNN, 044, TDNN., 616, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TDNA, 045, TDNA., 614, 1,1,0,0,0, A.SKIP, 0 )
%OPCT%(TDZE, 046, TDZE., 632, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TDZN, 047, TDZN., 636, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TDZA, 050, TDZA., 634, 1,1,0,0,0, A.SKIP, 0 )
%OPCT%(TDOE, 051, TDOE., 672, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TDON, 052, TDON., 676, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(TDOA, 053, TDOA., 674, 1,1,0,0,0, A.SKIP, 0 )
%OPCT%(HRLI, 054, HRLI., 505, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(SETZ, 055, SETZ., 400, 1,0,0,0,0, N.SKIP, STZPAT )
%OPCT%(SETO, 056, SETO., 474, 1,0,0,0,0, N.SKIP, STOPAT )
%OPCT%(TRZ, 057, TRZ., 620, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRLZ, 060, HRLZ., 514, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HLR, 061, HLR., 544, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HRR, 062, HRR., 540, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(HLLZ, 063, HLLZ., 510, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(AND, 064, AND.., 404, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(LSHC, 065, LSHC., 246, 1,1,1,1,0, N.SKIP, 0 )
%OPCT%(ANDI, 066, ANDI., 405, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(IOR, 067, IOR., 434, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(IORI, 070, IORI., 435, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(JRST, 071, XJRST., 254, 0,1,0,0,0, N.SKIP, XJPAT )
%OPCT%(SKIPA, 072, XSKPA., 334, 0,0,0,0,0, A.SKIP, 0 )
%OPCT%(AOSA, 073, AOSA., 354, 0,1,0,0,0, A.SKIP, 0 )
%OPCT%(MOVMS, 074, MOVMS., 217, 0,1,0,0,0, N.SKIP, MVMSPT )
%OPCT%(SOSL, 075, SOSL., 371, 0,1,0,0,0, C.SKIP, SLPAT )
%OPCT%(SOSG, 076, SOSG., 377, 0,1,0,0,0, C.SKIP, SGPAT )
%OPCT%(SETOB, 077, SETOB., 477, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(PUSHJ, 100, XPSHJ., 260, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(PUSHJ, 101, ERROR., 260, 1,1,0,0,1, N.SKIP, 0 )
%OPCT%(MOVEI, 102, XMOVI., 201, 1,1,1,0,0, N.SKIP, 0 ) ;[561]
%OPCT%(TLC, 103, TLC., 641, 1,1,0,0,0, N.SKIP, 0 ) ;[562]
%OPCT%(TLCA, 104, TLCA., 645, 1,1,0,0,0, A.SKIP, 0 )
%OPCT%(DFAD, 105, DFAD., 110, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DFSB, 106, DFSB., 111, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DFMP, 107, DFMP., 112, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(DFDV, 110, DFDV., 113, 1,1,0,0,0, N.SKIP, 0 )
%OPCT%(ANDCAM, 111, NDCAM., 412, 1,1,0,0,0, N.SKIP, 0 );[1004]
%OPCT%(EXTEND, 112, XTND., 123, 1,1,0,0,0, C.SKIP, 0 )
%OPCT%(Z, 113, ZOP., 0, 0,1,0,0,0, N.SKIP, 0 )
OPCT%V=: 113 ;EACH MODULE THAT EXPANDS THIS MACRO GETS
;GLOBAL SYMBOL OPCT%V; LINK COMPLAINS IF CONFLICT
LIST
> ;END OF OPCTB2 MACRO
DEFINE XOPTAB,<
XLIST
;%OPCT%(Z, 0, Z, 0, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CMPSL, 1, CMPSL, 1, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CMPSE, 2, CMPSE, 2, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CMPSLE, 3, CMPSLE, 3, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(EDIT, 4, EDIT, 4, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CMPSGE, 5, CMPSGE, 5, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CMPSN, 6, CMPSN, 6, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CMPSG, 7, CMPSG, 7, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CVTDBO, 10, CVTDBO, 10, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CVTDBT, 11, CVTDBT, 11, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CVTDBO, 12, CVTDBO, 12, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(CVTBDT, 13, CVTBDT, 13, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(MOVSO, 14, MOVSO, 14, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(MOVST, 15, MOVST, 15, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(MOVSLJ, 16, MOVSLJ, 16, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(MOVSRJ, 17, MOVSRJ, 17, 0,1,0,0,0, N.SKIP, 0 )
%OPCT%(XBLT, 20, XBLT, 20, 0,1,0,0,0, N.SKIP, 0 )
LIST
> ;END OF XOPTAB MACRO
SUBTTL MACRO DEFINITIONS COMMON TO PHASE O.
;DECLARE THE FIELD DEFINITIONS OF THE IPTAB, AND MACROS TO BUILD
; BYTE POINTERS INTO THAT FIELD.
; THESE FIELDS ARE SET UP IN COBOLO, AND EXAMINED BY PMATCH
; THE IP*EXT BIT IS A FLAG THAT SAYS "DO NOT USE THIS INSTR
; AS A MATCH FOR ANY INSTR". IT IS A SPECIAL "DONT TOUCH THIS".
;THESE BITS ARE ALL LEFT HALF FLAGS IN THE IPTAB.
; THEY ARE NORMALLY USED BY SAYING "TLXX AC,IP%FOO"
; WHERE AC CONTAINS A COPY OF THE ORIGINAL IPTAB ENT
IP%EXT==400000 ;DONT TOUCH THIS EXCEPTION TO NORMAL PROCESSING
IP%SKP==003400 ;ALL THE SKIP BITS
IP%SKA==000400 ;THE INSTRUCTION ALWAYS SKIPS
IP%SK1==001000 ;THE INSTRUCTION CONDITIONALLY SKIPS
IP%SK2==002000 ;THE INSTRUCTION CONDITIONALLY SKIPS ONE OR TWO
IP%AC== 074000 ;THE AC BITS IN THE IPTAB
IP%WC== 300000 ;THE WORD COUNT FIELD
IP%OP== 000377 ;THE OP CODE FIELD
;THESE MACROS DEFINE FIELDS IN THE IPTAB ENTRY
; THEY ARE NORMALLY USED BY SAYING SOMETHING
; LIKE "LDB AC,[IP$FOO <ADDR>]" WHERE ADDR CONTAINS
; AN IPTAB ENTRY. THEY BUILD THE APPROPRIATE
; BYTE POINTER.
DEFINE IP$EXT (ADDR),<POINT 1,ADDR,0> ;THE EXCEPTION TO PROCESSING BIT
DEFINE IP$AC (ADDR),<POINT 4,ADDR,6> ;THE AC OF THE INSTRUCTION
DEFINE IP$SKP (ADDR),<POINT 3,ADDR,9> ;THE COMBINED SKIP BITS
DEFINE IP$OP (ADDR),<POINT 8,ADDR,17> ;THE OP CODE FIELD
DEFINE IP$WC (ADDR),<POINT 2,ADDR,2> ;THE COUNT OF WORDS IN INSTBF
DEFINE IP$SKA (ADDR),<POINT 1,ADDR,9> ;THE UNCONDITIONAL SKIP BIT
DEFINE IP$SK1 (ADDR),<POINT 1,ADDR,8> ;THE CAN SKIP ONE INSTR BIT
DEFINE IP$SK2 (ADDR),<POINT 1,ADDR,7> ;THE CAN SKIP TWO INSTRS BIT
;DEFINE SOME SPECIAL "OPCODES". THEY ARE IPTAB ENTRIES
; THAT ARE NOT CODE. WE DEFINE THEM HERE FOR CONVENIENCE.
DEFINE SETVL (A,B),<B==A>
SETVL 377,%TAG. ;THIS ENTRY IS A TAG.
SETVL 376,%PROC. ;THIS ENTRY IS A PROCEDURE NAME
SETVL 375,%HDR. ;HEADER OF AN XWD
SETVL 374,%DATA. ;DATA WORD
SETVL 373,%CNVD. ;PUSHJ PP,CNVDB.##
;DEFINE FIELDS IN THE OPPART. (OPTIMIZER PATTERN RECOGNITION
; TABLE.) THERE IS AN ENTRY IN THE OPPART FOR EVERY OP CODE
; THAT IS DEFINED. THE RIGHT HALF OF EACH ENTRY CONTAINS
; THE OPPARE (OPTIMIZER PATTERN RECOGNIZER) ADDRESS FOR
; THAT SPECIFIC (OR GENERAL) OP CODE. THE LEFT HALF
; CONTAINS BITS OF INTEREST.
DEFINE A$SKIP (ADDR),<POINT 1,ADDR,17> ;INSTRUCTION ALWAYS SKIPS
DEFINE C$SKIP (ADDR),<POINT 1,ADDR,16> ;INSTRUCTION CONDITIONALY SKIPS
;DEFINE MNEMONICS FOR INSTRUCTION SKIP CHARACTERISTICS
A.SKIP==1 ;ALWAYS SKIPS
C.SKIP==2 ;CONDITIONALLY SKIPS
N.SKIP==0 ;NEVER SKIPS
END ;THAT;'S ALL FOLKS