*COMDECK  COMSQCG - STRUCTURE DECLARATIONS FOR QUIK CODE GENERATOR. 
          CTEXT  COMSQCG - STRUCTURE DECLARATIONS FOR QUIK CODE GEN.
 COMSQCG  SPACE  4,10 
***       COMSQCG - STRUCTURE DECLARATIONS FOR QUIK CODE GENERATOR. 
* 
*         COPYRIGHT CONTROL DATA CORP. 1977.
 AT       SPACE  4,10 
**        AT - FORM FOR ATF CELL IN FUN 
*         THIS CELL DRIVES APLIST GENERATION
  
  
          DESCRIBE AT.,60    ATF (APLIST TYPE INFO) WORD
 LEN      DEFINE             PROCESSING I/O LEN 
 IOC      DEFINE             PROCESSING I/O CONTROL CODE
 CHAR     DEFINE             CHAR TYPE APLIST FOR ASM 
 NUL      DEFINE             THIS ITEM HAS NON-UNITY ARRAY LEN
 LEV0     DEFINE             LEVEL 0
 SPR      DEFINE             SPACE PREVIOUSLY RESERVED
 MODE     DEFINE 5
          DEFINE 31 
 FILL     DEFINE 17 
 IO       DEFINE
 OP.      SPACE  4,20 
**        OP. - OPERATOR DESCRIPTION WORD.
* 
*         AT THE BEGINNING OF QCG, THE ROUTINE QUIK/DOW TRANSFORMS
*         THE (TH.) FORMAT RECEIVED IN THE INTERMEDIATE LANGUAGE FILE 
*         INTO (OP.) FORM, SO THE REST OF QCG IS NOT AWARE OF (TH.).
* 
*         AS CODE GENERATION PROCEEDS, THE (OP.) WORDS ARE RE-USED AS 
*         STATUS WORDS FOR THE INTERMEDIATE THEY GIVE RISE TO.  IF THE
*         INTERMEDIATE SHOULD GET STORED OUT INTO A TEMP, THE STATUS
*         WORD IS REPLACED BY A (P2.) REPRESENTING THE TEMP.
  
  
          DESCRIBE  OP. 
 SKEL     DEFINE 14          (RELATIVE) ADDRESS OF SKELETON 
 LINE     DEFINE 18          LINE/SEQUENCE NO. (1ST TURPLE OF STATEMENT)
          REDEF  LINE 
          DEFINE 4
 2ORD     DEFINE 14 
 CHIN     DEFINE 6
 MODE     DEFINE TH.MODEL 
 2MOD     DEQU   MODE,WB.MODEL
          ERRMI  OP.MODEL-OP.2MODL
          ERRMI  4-OP.MODEL 
 QATR     DEFINE 4
 1ORD     DEFINE 14 
          ERRNZ  OP.2ORDL-OP.1ORDL
 TOT      DEFINE 18,17
 QATR     SPACE  4,7
          REDEF  QATR        QCG REFORMATTING ATTRIBUTES
          DEFINE 1
 BSSI     DEFINE 1           BSS ISSUED BY *BOS*
 1DUC     DEFINE
 2DUC     DEFINE
 TOT      SPACE  4,7
          REDEF  TOT         USE TOTAL FIELDS FOR ACCURATE USE COUNTING 
 LTOT     DEFINE 9
 UTOT     DEFINE 9
 USE      DEQU   UTOT 
          ERRNZ  OP.USEL-OP.LTOTL 
 P2.      SPACE  4,20 
**        P2. - PASS TWO TAG FORM.
* 
*         A "P2. TAG-FORM" IS THE REPRESENTATION OF AN OPERAND USED 
*         BY THE QUICK CODE GENERATOR.  AT THE BEGINNING OF QCG, THE
*         ROUTINE GEN/DUC TRANSFORMS THE (TP.) FORMAT RECEIVED IN THE 
*         INTERMEDIATE LANGUAGE FILE INTO (P2.), SO THE REST OF QCG 
*         NOT AWARE OF (TP.). 
  
  
          DESCRIBE  P2. 
 TAG      DEFINE 16          PREFIX + TABLE ORDINAL 
 PFX      DEFINE 3,59 
 ORD      DEFINE 13 
 BIAS     DEFINE 24 
 ORBI     DEQU   BIAS,P2.TAGL+P2.BIASL
 2ATR     DEFINE 3           ATTRIBUTES KEPT THROUGH PASS 2 
 IL.      DEFINE 17          FIELDS APPEARING IN IL 
 ST.      DEQU   IL.         FIELDS USED FOR OPERAND STATUS  (T.OUS)
 RG.      DEQU   IL.         FIELDS USED FOR REGISTER STATUS (REGFILE)
          ERRNZ  P2.IL.P
  
  
          REDEF  IL.
 RSTS     DEFINE 3           STATUS DURING PASS 2 
 CLAS     DEFINE 5           OPERAND CLASS
 USE      DEFINE OP.USEL     COUNT OF USES OF OPERAND (PASS 2)
          ERRNZ  P2.USEP
  
  
          REDEF  2ATR 
 LCM      DEFINE             OPERAND IN ECS/LCM 
 FP       DEFINE             OPERAND IS A FORMAL PARAMETER
 LONG     DEFINE             OPERAND IS DOUBLE/COMPLEX
  
  
          REDEF  RSTS 
 TYP      DEFINE             (REGFILE) = REGISTER CONTAINS LOWER WORD 
 LST      DEFINE             (OUS, DUC) = LOWER WORD LOADED  (IN LREG)
 UST      DEFINE             (OUS, DUC) = UPPER WORD LOADED  (IN UREG)
  
  
          REDEF              THIS FORM USED FOR ODD-BALL TURPLES
 TAGU     DEFINE P2.TAGL
 TAGM     DEFINE P2.TAGL
          DEFINE 6
 TAGL     DEFINE P2.TAGL
 P2.CLAS  SPACE  4,8
**        P2.CLAS - ATTRIBUTES OF OPERANDS. 
  
  
          REDEF  CLAS 
 ARR      DEFINE             SUBSCRIPTED ARRAY REF
 SHRT     DEFINE             SHORT CONSTANT IN TAG FIELD
 ADDR     DEFINE             ADDRESS REFERENCE
 INTR     DEFINE             OPERAND IS AN INTERMEDIATE (TAG = IL INDEX)
 CNCT     DEFINE             OPERAND IS A CATENATION RESULT INTERMED
 CAT      DEQU   CNCT 
  
  
 P2=PFX   DECMIC P2.PFXP-P2.ORDP
 P2=PFX   EQU    "P2=PFX" 
 P2=PFX   MICRO  1,,/1S"P2=PFX"/
 K2.GL    EQU    K=GL*"P2=PFX"
 K2.AP    EQU    K=AP*"P2=PFX"
 K2.IO    EQU    K=IO*"P2=PFX"
 T.OUS    SPACE  4,20 
**        T.OUS - OPERAND USAGE STATUS. 
* 
*         AT THE START OF TS MODE PASS 2, NON-INTERMEDIATE OPERANDS IN
*         THE *IL* SEGMENT TO BE PROCESSED ARE ENTERED INTO (T.OUS),
*         ALONG WITH THEIR USE COUNTS.  THE TAG-FIELD OF THE OPERAND IN 
*         THE IL IS CHANGED INTO A C.OUS TAG, WHICH POINTS TO THE T.OUS 
*         ENTRY FOR THAT OPERAND. 
* 
*         AS CODE GENERATION PROCEEDS, OPERAND STATUS ENTRIES IN (T.OUS)
*         ARE UPDATED TO REFLECT CURRENT REGISTER ASSIGNMENT AND
*         NUMBER OF USES REMAINING. 
* 
*         THE UPPER FIELDS OF AN OPERAND STATUS ENTRY ARE (AND MUST BE) 
*         THE SAME AS UPPER FIELDS OF AN *IL* OPERAND.  (SEE "P2."
*         STRUCTURE DECLARATION.
  
  
          DESCRIBE  ST.,P2.ST.L 
 STAT     DEFINE 3           STATUS OF OPERAND (SEE BELOW)
          DEFINE 2
 LREG     DEFINE 6           REGISTER CONTAINING LOWER WORD 
 UREG     DEFINE 6           REGISTER CONTAINING UPPER WORD 
          ERRNZ  P2.ST.P
  
          REDEF  STAT 
          DEFINE
 LST      DEFINE             LOWER STATUS 
 UST      DEFINE             UPPER STATUS 
          SPACE  4,10 
          REDEF 
 CST      DEFINE 3           CHARACTER STATUS FIELD 
 ORD1     DEFINE 12          ORIGINAL (NON-EQIV) ORDINAL OF CHARACTER 
  
  
          REDEF  CST
 CTM      DEFINE ON IF IN TEMPORARY STORAGE 
 CAC      DEFINE ON IF CAC ENTRY EXISTS 
 UKL      DEFINE 1           UNKNOWN-LENGTH CONCAT. 
 RG.      SPACE  4,20 
**        RG. - QCG REGISTER ALLOCATION FIELDS. 
  
  
          DESCRIBE  RG.,P2.RG.L 
 TYP      DEFINE             REGISTER CONTAINS LOWER WORD OF OPERAND
          DEFINE 7
 USE      DEFINE P2.USEL     NUMBER OF REMAINING USES OF OPERAND
          ERRNZ  P2.USEP-RG.USEP
          ERRNZ  P2.RG.P
 A        DECMIC RG.USEL
 MAX.USEC EQU    1S"A"-1     MAXIMUM USE COUNT
 RLOCK    EQU    1S"A"/2     REGISTER LOCKED BIT
 RS.      SPACE  4,10 
**        RS. - REGISTER SCAN WORDS.
  
  
          DESCRIBE  RS. 
 INS      DEFINE PB.GHL      MACHINE OPCODE TO LOAD REGISTER
 MSK      DEFINE 18          WIDTH OF SCAN FIELD
 NUM      DEFINE 18          NUMBER OF REGS IN SCAN 
 TYP      DEFINE 18          TYPE OF REGS IN SCAN (FORM - 0T0)
          ERRNZ  RS.TYPP
  
  
 COMSQCG  ENDX
