! File: DTC.BEG ! ! This work was supported by the Advanced Research ! Projects Agency of the Office of the Secretary of ! Defense (F44620-73-C-0074) and is monitored by the ! Air Force Office of Scientific Research. ! ! THE FOLLOWING FIELD DEFINITIONS HAVE TO DO WITH SETTING AND TESTING ! THE FIELDS OF THE NODES THEMSELVES. THE FIRST PART HAS TO DO ! WITH THE RESULT WORD FORMAT (AND IS PERHAPS NOT NEEDED OUTSIDE ! OF DELAY). THE SECOND PART CONCERNS CODE PRODUCTION AND MUST BE ! SHARED. ! RESULT WORD FIELD DEFINITIONS: BIND RWOFF=5, ! STATEWORD OFFSET IN A GT NODE BWOFF=7; ! GT BITS WORD OFFSET IN A GT NODE COMMENT ! FIELDK ! ! FUNCTION: ! USED FOR SETTING UP BINDS OF IDENTIFIERS AND ASSOCIATED ! VARIATIONS THAT REPRESENT INFORMATION CONTAINED IN THE ! REQUEST, RESULT AND STATE WORDS DURING DELAY. ! INPUT: ! PS -- THE BIT POSITION AT WHICH THE FIELD STARTS ! N -- THE BASIC NAME OF A PARTICULAR VALUE FOR THIS FIELD ! O -- THE ACTUAL LITERAL VALUE FOR THIS IDENTIFIER ! SPECIFICS: ! THE NAME 'N' IS BOUND TO 'O'. THE NAME SUFFIXED WITH A 'K' ! IS BOUND TO 'O' SHIFTED TO ITS PROPER BIT POSITIONING (PS) ! TO BE USED A MASK. THE NAME SUFFIXED WITH A 'Q' IS THE ! STARTING BIT POSITION OF THE INFORMATION FIELD ITSELF (PS). ! EXAMPLE: ! THE VALUE TYPE FIELD HAS FOUR POSSIBLE CHOICES: RFREAL, ! RFFLOW, RFNONE AND RFBOTH. THEREFORE A TWO BIT WIDE FIELD ! IS NEEDED. AS IT TURNS OUT, BITS 34 & 35 ARE THIS FIELD. ! THEREFORE, TO DEFINE THE RFFLOW SUBSTATE MNEUMONIC WITH ITS ! ASSOCIATED MASK, WE HAVE: ! FIELDK(34,RFFLOW,2); ! WHICH EXPANDS TO ! BIND RFFLOW=2, RFFLOWK=2^34, RFFLOWQ=34; ! MACRO FIELDK(PS,N,O)=BIND N=O, ID(N)K=N^PS, ID(N)Q=PS$; MACRO SRFF =34,2$, ! REAL/FLOW SUBSTATES SRFRF =34,1$, ! REAL RESULT BIT SRFFF =35,1$, ! FLOW RESULT BIT SLF =33,1$, ! NON-LITERAL(=0)/LITERAL(=1) SSLF =30,3$, ! LITERAL SUBSTATE CASES SSPF =27,3$, ! POINTER SUBSTATE CASES KNEGF =26,1$, ! RESULT NEGATIVE KNOTF =25,1$, ! RESULT COMPLEMENTED IDTF =24,1$, ! INVOLVES DESTROYABLE TEMPORARY IMMF =23,1$, ! IMMEDIATE ADDRESS (ON SYMBOL OR LIT) RWORDF=23,13$; ! THE WHOLE RESULT WORD BITS FIELD BIND RESULTPOS=23; ! SAME FIELD DEFINITIONS EXCEPT FOR USE WITH GTVEC MAPPING IN ACCESSING ! THE STATE WORD OF THE GT NODE MACRO NSRFF =RWOFF,34,2$, ! REAL/FLOW SUBSTATES NSRFRF =RWOFF,34,1$, ! REAL RESULT BIT NSRFFF =RWOFF,35,1$, ! FLOW RESULT BIT NSLF =RWOFF,33,1$, ! NON-LITERAL(=0)/LITERAL(=1) NSSLF =RWOFF,30,3$, ! LITERAL SUBSTATE CASES NSSPF =RWOFF,27,3$, ! POINTER SUBSTATE CASES NKNEGF =RWOFF,26,1$, ! RESULT NEGATIVE NKNOTF =RWOFF,25,1$, ! RESULT COMPLEMENTED NIDTF =RWOFF,24,1$, ! INVOLVES DESTROYABLE TEMPORARY NIMMF =RWOFF,23,1$, ! IMMEDIATE ADDRESS (ON SYMBOL OR LIT) NRWORDF =RWOFF,23,13$; ! THE "WHOLE THING" !(SAME FIELD DEFINITIONS FOR THE STATE WORD OF THE GT NODE.) ! SRFF VALUES FIELDK(34,RFNONE,0); FIELDK(34,RFREAL,1); FIELDK(34,RFFLOW,2); FIELDK(34,RFBOTH,3); ! SLF VALUES FIELDK(33,NOTLIT,0); FIELDK(33,LIT,1); ! SSLF VALUES FIELDK(30,LFOTHER,0); FIELDK(30,LFZERO,1); ! =0 FIELDK(30,LFPM1,2); ! = +/- 1 FIELDK(30,LFPM2,3); ! = +/- 2 FIELDK(30,LF2N,4); ! = +/- (2 ** N) FIELDK(30,LF2NM1,5); ! = +/- (2 ** N -1) ! SSPF VALUES FIELDK(27,PFNONE,0); ! NO POINTER SPECIFIED FIELDK(27,PF016,1); ! <0,16> FIELDK(27,PF08,2); ! <0,8> FIELDK(27,PFE1,3); ! FIELDK(27,PFOTHER,4); ! FIELDK(27,PF88,5); ! <8,8> ! KNEGF VALUES FIELDK(26,KPOS,0); FIELDK(26,KNEG,1); ! IMMF VALUES FIELDK(23,IMM,1); ! ! REAL CODE CONTROL BITS (IN CXBITS) ! MACRO RCMOF =BWOFF,24,1$, ! "MOV OFFSET, TEMP" RCMTF =BWOFF,23,1$, ! "MOV TARGET, TEMP" RCNTF =BWOFF,22,1$, ! "NEG TEMP" RCOPTF =BWOFF,21,1$, ! "OPERATOR NON-TARGET, TEMP" RCAF =BWOFF,20,1$, ! "ADD OFFSET,TEMP" RCSF =BWOFF,19,1$, ! "SUB OFFSET, TEMP" RCCF =RCOPTF$, ! "COMPLEMENT TEMP" ROTHER =BWOFF,20,1$, ! SELECT CONTAINS AN OTHERWISE OR ALWAYS RCBITS =BWOFF,19,6$, DELAYBITS =BWOFF,19,16$; ! OTHER CONTROL BITS IN THE GT ENTRY MACRO GCODEF=RCOPTF$, ! GENERATE CODE - VALID ONLY FOR +,- NODES LABELREQDF=BWOFF,27,1$, ! LABEL MUST BE ASSIGNED FOR NODE SYMOFFF=BWOFF,28,1$, ! OFFSETF IS A SYMBOL TABLE POINTER RATHER THAN LITERAL SYMRESULT=BWOFF,29,1$; ! RESULT IS SYMBOL (OFFSET AND RES. STATE) COMMENT ! ISCSE, ISCSEUSE, ISCSECREATION, ISLARGECSE ! ! FUNCTION: ! PREDICATES TO DETERMINE CSE INFORMATION ABOUT ! A NODE. THE PREDICATES GIVE 'TRUE' ON THE FOLLOWING DESCRIBED ! CONDITIONS: ! ISCSE -- IF NODE IS ANY KIND OF CSE (PARENT OR USE) ! ISCSEUSE -- IF NODE IS A CSE USE BUT NOT A CSPARENT ! ISCSECREATION -- IF NODE IS A CSPARENT ! ISLARGECSE -- IF NODE IS A LARGE CSE (3 OR MORE USES) ! MACRO ISCSE(NODE)=(.GT[.GT[.NODE,CSPARENT],OCCF] GTR 1)$, ISCSEUSE(NODE)=(BIND GTVEC ND=(NODE); ISCSE(NODE) AND NOT .ND[MUSTGENCODE])$, ISCSECREATION(NODE)=(BIND GTVEC ND=(NODE); ISCSE(NODE) AND .ND[MUSTGENCODE])$, ISLARGECSE(NODE)=(.GT[.GT[.NODE,CSPARENT],OCCF] GTR 2)$; MACRO NONBOGUS(NODE)= ! COUNTERPART OF ROUTINE IN FLOWAN (DO NODE_.NODE[CSTHREAD] UNTIL .NODE[MUSTGENCODE])$; BIND ONES=#11111111,REPLICA3=#200401; MACRO SUMBITS(RCC)=(REGISTER QQ; QQ_((RCC)*REPLICA3 AND ONES)*ONES; .QQ<21,3>)$; % (VALID IF RCC HAS SEVEN OR FEWER BITS) %