!
! FIRST THE OPERAND FLAG CONSTANTS
!
CONSTINTEGER SCONST=0; ! CONST UPTO 64 BITS value is carried
! in opnd_d and opnd_xtra
CONSTINTEGER LCONST=1; ! CONST LONGER THAN SCONST const can be
! found elsewhere(at top of ar) by
! meanse of base&offset inf in_d and _xtra
CONSTINTEGER DNAME=2; ! NAME BY DICTIONARY NO the base and disp in
! the dictionary after adjusting by
! possible offset for item in
! in records lead to the variable
CONSTINTEGER ARNAME=3; ! NAME BY AR POINTER opnd_d the ar pointer
! this form local to pass2
! and used to identify functions
! with params before the call
! is planted
CONSTINTEGER VIAPTR=4; ! VIA TRIPLE WITHOFFSET TO POINTER
! At an offset(_xtra) from address in
! referenced triple can be found a
! pointer to the required operand
CONSTINTEGER INDNAME=5; ! INDIRECT VIA DICTIONARY base&disp
! in dictionary identify a pointer
! variable at possible offset from
! this pointer
CONSTINTEGER INDIRECT=6; ! INDIRECT VIA TRIPLE WITH OFFSET
! the refenced triple has computed
! the (32bit) address of an item
! an offset may have to be applied
! before the fetch or store
CONSTINTEGER LOCALIR=7; ! BASE DISP REF IN CURRENT STACK FRAME
! opnd_b=base<<16!offset used only for
! compiler generated temporaries
CONSTINTEGER REFTRIP=8; ! REFERENCE TO A TRIPLE the operand is the result of
! triple opnd_d
CONSTINTEGER INAREG=9; ! REGISTER OPERAND this form is local to the
! code generating pass(es)
CONSTINTEGER developped=10; ! also local to generator
CONSTINTEGER BTREFMASK=1<<REFTRIP!1<<INDIRECT!1<<VIAPTR
!
! NOW THE DEFINITIONS OF ONE OPERAND TRIPLES <128
!
CONSTINTEGER RTHD=1; ! ROUTINE-BLOCK HEADING
CONSTINTEGER RDSPY=2; ! ROUTINE ENTRY SET DISPLAY
CONSTINTEGER RDAREA=3; ! ROUTINE LEAVE DIAGNOSTIC SPACE
CONSTINTEGER RDPTR=4; ! SET DIAGNOSTIC POINTER
CONSTINTEGER RTBAD=5; ! ROUTINE-FN BAD EXIT
CONSTINTEGER RTXIT=6; ! "%RETURN"
CONSTINTEGER XSTOP=7; ! EXECUTE "%STO"
CONSTINTEGER NOTL=10; ! LOGICAL NOT
CONSTINTEGER LNEG=11; ! LOGICAL NEGATE
CONSTINTEGER IFLOAT=12; ! CONVERT INTEGER TO REAL
CONSTINTEGER MODULUS=13; ! AS USED BY IMOD&RMOD
CONSTINTEGER SHRTN=14; ! SHORTEN TO LOWER PRECISION
CONSTINTEGER LNGTHN=15; ! LENGTHEN TO HIGHER PRECISION
CONSTINTEGER JAMSHRTN=16; ! SHORTEN FOR JAM TRANSFER
CONSTINTEGER NULLT=18; ! FOR REDUNDANT TRIPLES
CONSTINTEGER PRELOAD=19; ! PREFETCH FOR OPTIMISATION REASONS
CONSTINTEGER SSPTR=21; ! STORE STACK POINTER
CONSTINTEGER RSPTR=22; ! RESTORE STACK POINTER
CONSTINTEGER ASPTR=23; ! ADVANCE STACK PTR
CONSTINTEGER DARRAY=24; ! DECLARE ARRAY(IE STORE HD)
CONSTINTEGER SLINE=25; ! UPDATE LINE NO
CONSTINTEGER STPCK=26; ! CHECK FOR ZERO STEPS
CONSTINTEGER FORPRE=27; ! PREAMBLE FOR "FOR"
CONSTINTEGER FORPOST=28; ! POSTAMBLE FOR "FOR"
CONSTINTEGER FORPR2=29; ! FOR SECOND PREAMBLE
CONSTINTEGER PRECL=30; ! PREPARATION FOR CALL
CONSTINTEGER RCALL=31; ! THE CALL
CONSTINTEGER RCRFR=32; ! RECOVER FN RESULT
CONSTINTEGER RCRMR=33; ! RECOVER MAP RESULT
CONSTINTEGER GETAD=35; ! GET ADDRESS OF NAME
CONSTINTEGER RTOI1=36; ! REAL TO INTEGER AS INT
CONSTINTEGER RTOI2=37; ! REAL TO INTEGER INTPT
CONSTINTEGER ITOS1=38; ! INTEGER TO STRING AS TOSTRING
CONSTINTEGER MNITR=39; ! %MONITOR
CONSTINTEGER PPROF=40; ! PRINT PROFILE
CONSTINTEGER RTFP=41; ! TURN RT INTO FORMAL PARAMETER
CONSTINTEGER ONEV1=42; ! ON EVENT 1 PRIOR TO TRAP
CONSTINTEGER ONEV2=43; ! ON EVENT 2 AFTER TRAP
CONSTINTEGER DVSTT=44; ! START OF DOPE VECTOR
CONSTINTEGER DVEND=45; ! END OF DV EVALUATE TOTSIZE ETC
CONSTINTEGER FOREND=46; ! END OF FOR LOOP
!
! CODES FOR USER WRITTEN ASSEMBLER. NATURALLY THESE ARE NOT
! MACHINE INDEPENDENT
!
CONSTINTEGER UCNOP=50; ! FOR CNOPS
CONSTINTEGER UCB1=51; ! ONE BYTE OPERATIONS
CONSTINTEGER UCB2=52; ! FOR 2 BYTE OPERATIONE
CONSTINTEGER UCB3=53; ! FOR 3 BYTE OPERATIONS
CONSTINTEGER UCW=54; ! FOR WORD OPERATIONS
CONSTINTEGER UCBW=55; ! FOR OPC,BYTEWORD OPERATIONE
CONSTINTEGER UCWW=56; ! FOR OPC,WORD,WORD OPERAIONS
CONSTINTEGER UCLW=57; ! FOR LONGWORD OPERATIONS
CONSTINTEGER UCB2W=58; ! FOR OPC,B1,B2,WORD OPERATIONS
CONSTINTEGER UCNAM=59; ! FOR ACESS TO NAMES FROM ASSEMBLER
!
! NOW THE BINARY OPERATIONS
!
CONSTINTEGER ADD=128; ! ADDITION
CONSTINTEGER SUB=129; ! SUBTRACTION
CONSTINTEGER NONEQ=130; ! INTEGER NONEQUIVALENCE
CONSTINTEGER ORL=131; ! LOGICAL OR
CONSTINTEGER MULT=132; ! MULTIPLICATION
CONSTINTEGER INTDIV=133; ! INTEGER DIVISION
CONSTINTEGER REALDIV=134; ! REAL DIVISION
CONSTINTEGER ANDL=135; ! LOGICAL AND
CONSTINTEGER RSHIFT=136; ! LOGICAL RIGHT SHIFT
CONSTINTEGER LSHIFT=137; ! LOGICAL LEFT SHIFT
CONSTINTEGER REXP=138; ! REAL EXPONENTIATION
CONSTINTEGER COMP=139; ! COMPARISONS
CONSTINTEGER DCOMP=140; ! FIRST PART OF DSIDED(NEEDED?)
CONSTINTEGER VMY=141; ! VECTOR MULTIPLY
CONSTINTEGER COMB=142; ! COMBINE (IE ADD OF LA) ON VMY RESULTS
CONSTINTEGER VASS=143; ! VARAIABLE ASSIGN WITH CHECKING
CONSTINTEGER VJASS=144; ! VARIABLE JAMMED ASSIGN
CONSTINTEGER IEXP=145; ! INTEGER EXPONENTIAITION
CONSTINTEGER BADJ=146; ! BASE ADJUST ARRAY INDEX
CONSTINTEGER AINDX=147; ! INDEX ARRAY(COMBINE BS&IX)
CONSTINTEGER IFETCH=148; ! INDEXED FETCH
CONSTINTEGER LASS=149; ! ASSIGN LOCAL TEMPORARY
CONSTINTEGER FORCK=150; ! VALIDATE FOR
CONSTINTEGER PRECC=151; ! PRELIMINARY CONNCATENATION
CONSTINTEGER CONCAT=152; ! CONCATENATION
CONSTINTEGER IOCPC=153; ! CALL IOCP
CONSTINTEGER PASS1=154; ! PRIMARY PARAMETER ASSIGNMENT
CONSTINTEGER PASS2=155; ! PARAMETER PASSING POINTER PARAMS
CONSTINTEGER PASS3=156; ! PARAMETERPASSING ARRAY PARAMETERS
CONSTINTEGER PASS4=157; ! PASS A FORMAL PROCEDURE
CONSTINTEGER PASS5=158; ! PASS AN UNTYPE(%NAME) PARAMETER
CONSTINTEGER PASS6=159; ! PASS STRFN OR RECFN RESULT AREA
CONSTINTEGER BJUMP=160; ! BACKWARDS JUMPS
CONSTINTEGER FJUMP=161; ! FORWARD JUMPS
CONSTINTEGER REMLB=162; ! REMOVE LAB FROM LABELIST
! NEEDS TO BE TRIPLE IF COMBINED
! LABEL LIST IS USED
CONSTINTEGER TLAB=163; ! TO ENTER A LABEL
CONSTINTEGER DCLSW=164; ! DECLARE A SWITCH ARRAY
CONSTINTEGER SETSW=165; ! SET A SWITCH TO "CA"
CONSTINTEGER GOTOSW=166; ! GO TO A SWITCH LABEL
CONSTINTEGER STRASS1=167; ! STRING GENERAL ASSIGNMET
CONSTINTEGER STRASS2=168; ! STRING FIXED LENGTH ASSNMENT
CONSTINTEGER STRJT=169; ! STRING JAM TRANSFER
CONSTINTEGER AHASS=170; ! ASSIGNMENT OF ARRAYHEADS
CONSTINTEGER PTRAS=171; ! ASSIGNMENT OF POINTERS
CONSTINTEGER MAPRES=172; ! ASSIGN MAPPING FN RESULT
CONSTINTEGER FNRES=173; ! ASSIGN FN RESULT
CONSTINTEGER SCOMP=174; ! STRING COMPARISON
CONSTINTEGER SDCMP=175; ! FIRST PART OF STRING D-SIDED
CONSTINTEGER PRES1=176; ! PRE RESOLUTION 1
CONSTINTEGER PRES2=177; ! PRE RESOLUTION 2
CONSTINTEGER RESLN=178; ! STRING RESOLUTION
CONSTINTEGER RESFN=179; ! RESOLUTION FINALE
CONSTINTEGER SIGEV=180; ! SIGNAL EVENT
CONSTINTEGER RECASS=181; ! WHOLE RECORD ASSIGNMENT
CONSTINTEGER AAINC=182; ! ARRAY ADDRESS ADJUST FOR
! RECORD RELATIVE TO ABSOLUTE
CONSTINTEGER AHADJ=183; ! MODIFY HEAD FOR MAPPING
CONSTINTEGER CTGEN=184; ! CREATE TYPE GENERAL PARAMETER
CONSTINTEGER GETPTR=185; ! POINTER FOR PASSING BY NAME
CONSTINTEGER SINDX=186; ! INDEX STRING IE CHARNO
! SAME AS AINDX FOR ALL TARGETS
! BUT PNX !
CONSTINTEGER ZCOMP=187; ! COMPARISONS WITH ZERO
! GENERATED BY OPTIMISER
CONSTINTEGER CLSHIFT=188; ! CONSTANT LOGICAL SHIFT
! GENERATED BY OPTIMISER
CONSTINTEGER CASHIFT=189; ! CONSTANT ARITHMETIC SHIFT
! GENERATED BYOPTIMISER
CONSTINTEGER DVBPR=190; ! GENERATE DV ENTRY FOR BOUND PAIR
CONSTINTEGER RSTORE=191; ! REGISTER TO STORE OPERATION
CONSTINTEGER MULTX=192; ! MULTIPLY AND EXTEND PRECISION
ENDOFFILE