mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-22 16:04:18 +00:00
540 lines
22 KiB
Fortran
540 lines
22 KiB
Fortran
C***********************************************************************
|
|
C
|
|
C PLMCOM.FOR
|
|
C
|
|
C
|
|
C D I S C L A I M E R N O T I C E
|
|
C ------------------- -----------
|
|
C
|
|
C This document and/or portions of the material and data furnished
|
|
C herewith, was developed under sponsorship of the U. S. Government.
|
|
C Neither the U.S. nor the U.S.D.O.E., nor the Leland Stanford Junior
|
|
C University, nor their employees, nor their respective contractors,
|
|
C subcontractors, or their employees, makes any warranty, express or
|
|
C implied, or assumes any liability or responsibility for accuracy,
|
|
C completeness or usefulness of any information, apparatus, product
|
|
C or process disclosed, or represents that its use will not infringe
|
|
C privately-owned rights. Mention of any product, its manufacturer,
|
|
C or suppliers shall not, nor is it intended to, imply approval, dis-
|
|
C approval, or fitness for any particular use. The U. S. and the
|
|
C University at all times retain the right to use and disseminate same
|
|
C for any purpose whatsoever. Such distribution shall be made by the
|
|
C National Energy Software Center at the Argonne National Laboratory
|
|
C and only subject to the distributee furnishing satisfactory proof
|
|
C that he has a valid license from the Intel Corporation in effect.
|
|
C
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C This include-file supplies all global definitions for the
|
|
C PL/M-VAX compiler.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C R E V I S I O N H I S T O R Y
|
|
C
|
|
C 29SEP81 Alex Hunter 1. Increase SYMBOL_MAX. (V5.3)
|
|
C 2. Increase max string size to 290.
|
|
C 3. Change relevant SYMBOL and MEMBER arrays
|
|
C to INTEGER*4.
|
|
C 4. Add MEMBER_LOWER_BOUND array to support
|
|
C lower bounds for structure member arrays.
|
|
C 5. Add MEMBER_OFFSET array to support the
|
|
C AT(@external.member) construct.
|
|
C 21OCT81 Alex Hunter 1. Add stuff for basic block analysis. (V5.5)
|
|
C 2. Add OP_SIGNED and OP_UNSIGNED operators.
|
|
C 28OCT81 Alex Hunter 1. Add new keywords (SELECTOR-REGISTER). (V5.7)
|
|
C 2. Add new symbol type attributes.
|
|
C 09NOV81 Alex Hunter 1. Add assumption flags. (V5.8)
|
|
C 10NOV81 Alex Hunter 1. Add S_NO_SIDE_EFFECTS, ASSUME_DBG, and
|
|
C serial no. deltas. (V6.0)
|
|
C 12NOV81 Alex Hunter 1. Add S_REGISTER,S_SPECIAL,SYMBOL_PSECT,
|
|
C SYM_MLAST, et al. (V6.1)
|
|
C 2. Change ATOM_DISP to I*4.
|
|
C 3. Delete predefined atoms.
|
|
C 4. Add new PSECTS and change names.
|
|
C 14JAN82 Alex Hunter 1. Change ASSUME_S32 to ASSUME_S64. (V6.5)
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
IMPLICIT INTEGER*2 (A-Z)
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Reserved word token values.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER K_ADDRESS=101, K_AND=102, K_AT=103, K_BASED=104,
|
|
# K_BY=105, K_BYTE=106, K_CALL=107, K_CASE=108,
|
|
# K_DATA=109, K_DECLARE=110, K_DISABLE=111, K_DO=112,
|
|
# K_ELSE=113, K_ENABLE=114, K_END=115, K_EOF=116,
|
|
# K_EXTERNAL=117, K_GO=118, K_GOTO=119, K_HALT=120,
|
|
# K_IF=121, K_INITIAL=122, K_INTEGER=123,
|
|
# K_INTERRUPT=124, K_LABEL=125, K_LITERALLY=126,
|
|
# K_MINUS=127, K_MOD=128, K_NOT=129, K_OR=130,
|
|
# K_PLUS=131, K_POINTER=132, K_PROCEDURE=133,
|
|
# K_PUBLIC=134, K_REAL=135, K_REENTRANT=136,
|
|
# K_RETURN=137, K_STRUCTURE=138, K_THEN=139, K_TO=140,
|
|
# K_WHILE=141, K_WORD=142, K_XOR=143,
|
|
# K_COMMON=144, K_LONG=145, K_DOUBLE=146, K_OTHERWISE=147,
|
|
# K_QUAD=148,K_FORWARD=149,K_SELECTOR=150,K_DWORD=151,
|
|
# K_SHORT=152,K_BOOLEAN=153,K_REGISTER=154
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Delimiter token values.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER D_PLUS=201, D_MINUS=202, D_STAR=203, D_SLASH=204,
|
|
# D_LT=205, D_GT=206, D_EQ=207, D_NE=208, D_LE=209,
|
|
# D_GE=210, D_ASSN=211, D_COLON=212, D_SEMI=213,
|
|
# D_DOT=214, D_COMMA=215, D_LP=216, D_RP=217, D_AT=218
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Non-terminal token values.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER NT_STATEMENT=301,NT_EXPRESSION=302,NT_TYPE=303
|
|
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Controls.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*2 LEFTMARGIN,RIGHTMARGIN,SKIP_STATE,PAGELENGTH,
|
|
# PAGEWIDTH,OPTIMIZE,MODEL,TABS
|
|
LOGICAL*1 LIST_FLAG,LARGE,NON_CONTROL_LINE_READ
|
|
LOGICAL*1 PRINT_FLAG,CODE_FLAG,XREF_FLAG,IXREF_FLAG,SYMBOLS_FLAG,
|
|
# PAGING_FLAG,EJECT_FLAG,INTVECTOR_FLAG,OBJECT_FLAG,
|
|
# OVERFLOW_FLAG,DEBUG_FLAG,TYPE_FLAG,ROM_FLAG,COND_FLAG,
|
|
# OPRINT_FLAG,WARN_FLAG,PLM80_FLAG,GLOBALS_FLAG,
|
|
# PUBLICS_FLAG,OVERLAY_FLAG,ROOT_FLAG,ALIGN_FLAG,
|
|
# FREQ_FLAG,VECTOR_FLAG
|
|
PARAMETER MAX_IN=20
|
|
BYTE PRINT_FILE_STRING(0:45),IXREF_FILE_STRING(0:45),
|
|
# WORK_FILE_STRING(0:45),OBJECT_FILE_STRING(0:45),
|
|
# DATE_STRING(0:80),TITLE_STRING(0:80),SUBTITLE_STRING(0:80),
|
|
# IN_FILE_STRING(0:45,8:MAX_IN+1),OPRINT_FILE_STRING(0:45),
|
|
# GLOBALS_FILE_STRING(0:45),PUBLICS_FILE_STRING(0:45),
|
|
# OVERLAY_PREFIX(0:80)
|
|
COMMON/CONTROLS/ LEFTMARGIN,RIGHTMARGIN,LIST_FLAG,LARGE,
|
|
# NON_CONTROL_LINE_READ,SKIP_STATE,PAGELENGTH,PAGEWIDTH,
|
|
# OPTIMIZE,MODEL,PRINT_FLAG,CODE_FLAG,XREF_FLAG,IXREF_FLAG,
|
|
# SYMBOLS_FLAG,PAGING_FLAG,EJECT_FLAG,INTVECTOR_FLAG,
|
|
# OBJECT_FLAG,OVERFLOW_FLAG,DEBUG_FLAG,TYPE_FLAG,ROM_FLAG,
|
|
# COND_FLAG,
|
|
# PRINT_FILE_STRING,IXREF_FILE_STRING,WORK_FILE_STRING,
|
|
# OBJECT_FILE_STRING,DATE_STRING,TITLE_STRING,
|
|
# SUBTITLE_STRING,IN_FILE_STRING,OPRINT_FILE_STRING,
|
|
# OPRINT_FLAG,TABS,WARN_FLAG,PLM80_FLAG,GLOBALS_FLAG,
|
|
# PUBLICS_FLAG,OVERLAY_FLAG,ROOT_FLAG,GLOBALS_FILE_STRING,
|
|
# PUBLICS_FILE_STRING,OVERLAY_PREFIX,ALIGN_FLAG,FREQ_FLAG,
|
|
# VECTOR_FLAG
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Character stream input and macro expansion stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER LITMAX=16
|
|
PARAMETER EOLCHAR='01'X, EOFCHAR='02'X
|
|
INTEGER*2 COL, LITLEV, LITCOL(LITMAX)
|
|
CHARACTER*1 CHAR, EOL, EOF, TAB
|
|
CHARACTER*300 LITVAL(LITMAX), CARD
|
|
EQUIVALENCE (CARD,LITVAL(1))
|
|
COMMON /LEXICAL/ COL,LITLEV,LITCOL
|
|
COMMON /LEXCHAR/ LITVAL,CHAR,EOL,EOF,TAB
|
|
DATA COL/72/, CARD(73:73)/EOLCHAR/, LITLEV/1/
|
|
DATA EOL/EOLCHAR/, EOF/EOFCHAR/, TAB/'09'X/
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Lexical token analysis stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER STRING_SIZE_MAX=290 ! (V5.3)
|
|
CHARACTER DELIMITER*2, IDENTIFIER*32, STRING*(STRING_SIZE_MAX)
|
|
CHARACTER NEXT_DELIMITER*2, NEXT_IDENTIFIER*32,
|
|
# NEXT_STRING*(STRING_SIZE_MAX)
|
|
REAL*8 FLOATVAL, NEXT_FLOATVAL
|
|
INTEGER*4 FIXVAL, NEXT_FIXVAL
|
|
INTEGER*2 TOKENTYPE, TT, STRLEN
|
|
INTEGER*2 NEXT_TOKENTYPE, NEXT_STRLEN
|
|
PARAMETER INVALID=0, DELIM=1, ID=2, FIXCON=3, FLOATCON=4,
|
|
# STRCON=5, EOFTOK=6
|
|
COMMON /TOKEN/ TOKENTYPE,FIXVAL,FLOATVAL,STRLEN,
|
|
# NEXT_TOKENTYPE,NEXT_FIXVAL,NEXT_FLOATVAL,
|
|
# NEXT_STRLEN
|
|
COMMON /TOKENCHAR/ DELIMITER,IDENTIFIER,STRING,
|
|
# NEXT_DELIMITER,NEXT_IDENTIFIER,NEXT_STRING
|
|
EQUIVALENCE (TT,TOKENTYPE)
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C I/O unit definitions.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
COMMON /IO/ IN,OUT,LST,IXI,GBL,PUB
|
|
DATA IN/8/, OUT/4/, LST/6/, IXI/3/, GBL/1/, PUB/2/
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Label structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER MAX_LABELS=10
|
|
CHARACTER*32 LABELS(MAX_LABELS), LAST_LABEL
|
|
INTEGER*2 NLABELS
|
|
COMMON /LABEL/ NLABELS
|
|
COMMON /LABELC/ LABELS, LAST_LABEL
|
|
DATA NLABELS /0/
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Symbol attribute values.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER S_MACRO=1,S_SCALAR=2,S_ARRAY=3,S_PROC=4,S_LABEL=5,
|
|
# S_KEYWORD=6
|
|
|
|
PARAMETER S_BYTE=1,S_WORD=2,S_INTEGER=3,S_PTR=4,S_REAL=5,
|
|
# S_LONG=6,S_DOUBLE=7,S_QUAD=8,S_SHORT=9,S_DWORD=10,
|
|
# S_SELECTOR=11,S_BOOLEAN=12,
|
|
# S_STRUC=100
|
|
|
|
PARAMETER S_EXT=1,S_STATIC=2,S_BASED=3,S_ARG=4,S_FORWARD=5,
|
|
# S_DYNAMIC=6, S_VALUE=8,S_UNRESOLVED=9,
|
|
# S_BUILTIN=10,S_LOCAL=11,S_REGISTER=12
|
|
|
|
PARAMETER S_PUBLIC=1,S_UNDEF=2,S_INTERRUPT=4,S_REENT=8,
|
|
# S_FORCE_STATIC=16,S_DATA=32,S_OVERLAID=64,
|
|
# S_SAME_OVERLAY=128,S_NOTPUBLIC=256,
|
|
# S_NO_SIDE_EFFECTS=512,S_SPECIAL=1024
|
|
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Symbol table structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER SYMBOL_MAX=2000, MEMBER_MAX=500, PARAM_MAX=100
|
|
PARAMETER SYM_MLAST=1,SYM_MLEN=2,SYM_MSIZ=3,
|
|
# SYM_SLAST=4,SYM_SLEN=5,SYM_SSIZ=6,
|
|
# FIRST_AVAILABLE_SYMBOL_INDEX=7
|
|
|
|
CHARACTER*32 SYMBOL_PLM_ID(SYMBOL_MAX), SYMBOL_VAX_ID(SYMBOL_MAX)
|
|
INTEGER*2 SYMBOL_KIND(SYMBOL_MAX), SYMBOL_TYPE(SYMBOL_MAX),
|
|
# SYMBOL_LINK(SYMBOL_MAX), SYMBOL_LIST_SIZE(SYMBOL_MAX),
|
|
# SYMBOL_REF(SYMBOL_MAX), SYMBOL_BASE(SYMBOL_MAX),
|
|
# SYMBOL_BASE_MEMBER(SYMBOL_MAX),
|
|
# SYMBOL_FLAGS(SYMBOL_MAX), SYMBOL_INDEX,
|
|
# SYMBOL_CHAIN(SYMBOL_MAX),
|
|
# SYMBOL_SERIAL_NO(SYMBOL_MAX),
|
|
# SYMBOL_PSECT(SYMBOL_MAX)
|
|
INTEGER*4 SYMBOL_DISP(SYMBOL_MAX),SYMBOL_NBR_ELEMENTS(SYMBOL_MAX),
|
|
# SYMBOL_LOWER_BOUND(SYMBOL_MAX),
|
|
# SYMBOL_ELEMENT_SIZE(SYMBOL_MAX)
|
|
LOGICAL*4 SAME_OVERLAY
|
|
COMMON/SYMBOLC/SYMBOL_PLM_ID,SYMBOL_VAX_ID
|
|
COMMON/SYMBOL/SYMBOL_KIND,SYMBOL_TYPE,
|
|
# SYMBOL_LINK,SYMBOL_LIST_SIZE,
|
|
# SYMBOL_REF,SYMBOL_BASE,SYMBOL_BASE_MEMBER,
|
|
# SYMBOL_FLAGS,SYMBOL_INDEX,SYMBOL_CHAIN,SAME_OVERLAY,
|
|
# SYMBOL_SERIAL_NO,SYMBOL_PSECT
|
|
COMMON/SYMBOL4/SYMBOL_DISP,SYMBOL_NBR_ELEMENTS,
|
|
# SYMBOL_LOWER_BOUND,SYMBOL_ELEMENT_SIZE
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Member-symbol table structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
CHARACTER*32 MEMBER_PLM_ID(MEMBER_MAX), MEMBER_VAX_ID(MEMBER_MAX)
|
|
INTEGER*2 MEMBER_KIND(MEMBER_MAX), MEMBER_TYPE(MEMBER_MAX),
|
|
# MEMBER_INDEX,MEMBER_SERIAL_NO(MEMBER_MAX)
|
|
INTEGER*4 MEMBER_NBR_ELEMENTS(MEMBER_MAX),
|
|
# MEMBER_LOWER_BOUND(MEMBER_MAX),
|
|
# MEMBER_ELEMENT_SIZE(MEMBER_MAX),
|
|
# MEMBER_OFFSET(MEMBER_MAX)
|
|
COMMON/MEMBERC/MEMBER_PLM_ID,MEMBER_VAX_ID
|
|
COMMON/MEMBER/MEMBER_KIND,MEMBER_TYPE,MEMBER_INDEX,
|
|
# MEMBER_SERIAL_NO
|
|
COMMON/MEMBER4/MEMBER_NBR_ELEMENTS,MEMBER_LOWER_BOUND,
|
|
# MEMBER_ELEMENT_SIZE,MEMBER_OFFSET
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Parameter list structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*2 PARAM_TYPE(PARAM_MAX)
|
|
COMMON/PARAM/PARAM_TYPE
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Block scope structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER BLOCK_MAX=20
|
|
INTEGER*2 BLOCK_LEVEL,SYMBOL_TOP(0:BLOCK_MAX),
|
|
# MEMBER_TOP(0:BLOCK_MAX),PARAM_TOP(0:BLOCK_MAX),
|
|
# STRINGS_TOP(0:BLOCK_MAX)
|
|
COMMON/BLOCK/BLOCK_LEVEL,SYMBOL_TOP,MEMBER_TOP,PARAM_TOP,
|
|
# STRINGS_TOP
|
|
DATA BLOCK_LEVEL/0/
|
|
DATA MEMBER_TOP(0)/0/,PARAM_TOP(0)/0/,
|
|
# STRINGS_TOP(0)/0/
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C String space structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER STRINGS_MAX=32000
|
|
CHARACTER*(STRINGS_MAX) STRINGS
|
|
COMMON/STRINGS/STRINGS
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Miscellaneous stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*2 BYTE_SIZE(S_BYTE:S_QUAD)
|
|
COMMON/TABLES/BYTE_SIZE
|
|
DATA BYTE_SIZE/1,2,2,4,4,4,8,8/
|
|
|
|
PARAMETER NULL=0, DUMMY=0
|
|
|
|
PARAMETER R0=16
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Node space definitions.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER NODE_MIN=20,NODE_MAX=200,
|
|
# REG_MIN=1,REG_MAX=16,
|
|
# ANY_WHERE=-3,ANY_REG=-1,ON_STACK=-2,
|
|
# CON_MIN=-9,CON_MAX=-4,
|
|
# ATOM_MIN=-200,ATOM_MAX=-10,
|
|
# FIRST_FREE_ATOM=ATOM_MIN,
|
|
# FIX_MIN=-300,FIX_MAX=-201,
|
|
# FLT_MIN=-400,FLT_MAX=-301
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Operator node structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*2 OPNODE_OP(NODE_MIN:NODE_MAX),
|
|
# OPNODE_OPND1(NODE_MIN:NODE_MAX),
|
|
# OPNODE_OPND2(NODE_MIN:NODE_MAX),
|
|
# NEXT_NODE
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Atom node structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*2 ATOM_SYM(ATOM_MIN:ATOM_MAX),
|
|
# ATOM_MEM(ATOM_MIN:ATOM_MAX),
|
|
# ATOM_BASE(ATOM_MIN:ATOM_MAX),
|
|
# ATOM_SUB(ATOM_MIN:ATOM_MAX),
|
|
# ATOM_FLAGS(ATOM_MIN:ATOM_MAX),
|
|
# ATOM_SERIAL_NO(ATOM_MIN:ATOM_MAX),
|
|
# NEXT_ATOM
|
|
INTEGER*4 ATOM_DISP(ATOM_MIN:ATOM_MAX)
|
|
|
|
PARAMETER A_L2P=1,A_P2L=2,A_IMMEDIATE=4,A_CTIM=8,A_VECTOR=16
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Literal and constant node structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*4 FIXED_VAL(FIX_MIN:FIX_MAX),
|
|
# NEXT_FIXED
|
|
|
|
REAL*8 FLOAT_VAL(FLT_MIN:FLT_MAX)
|
|
INTEGER*2 NEXT_FLOAT
|
|
|
|
INTEGER*2 CONSTANT_LABEL(CON_MIN:CON_MAX),
|
|
# NEXT_CONSTANT
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Structures common to all nodes.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*2 NODE_REG(FLT_MIN:NODE_MAX),
|
|
# NODE_REFCT(FLT_MIN:NODE_MAX),
|
|
# NODE_TYPE(FLT_MIN:NODE_MAX),
|
|
# NODE_CONTEXT(FLT_MIN:NODE_MAX)
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Code tree common block.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
COMMON/TREE/OPNODE_OP,OPNODE_OPND1,OPNODE_OPND2,
|
|
# ATOM_SYM,ATOM_MEM,ATOM_BASE,
|
|
# ATOM_SUB,ATOM_DISP,
|
|
# FIXED_VAL,FLOAT_VAL,
|
|
# NODE_REG,NODE_REFCT,NODE_CONTEXT,NODE_TYPE,
|
|
# NEXT_NODE,NEXT_ATOM,NEXT_FIXED,NEXT_FLOAT,
|
|
# CONSTANT_LABEL,NEXT_CONSTANT,ATOM_FLAGS,
|
|
# ATOM_SERIAL_NO
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Context resolution stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER CX_UNSIGNED=1, CX_SIGNED=2
|
|
|
|
INTEGER*2 CONTEXT(S_BYTE:S_QUAD)
|
|
COMMON /CX/ CONTEXT
|
|
DATA CONTEXT
|
|
# /CX_UNSIGNED,CX_UNSIGNED,CX_SIGNED,CX_UNSIGNED,CX_SIGNED,
|
|
# CX_SIGNED,CX_SIGNED,CX_SIGNED/
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Miscellaneous declarations.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
LOGICAL*4 ATOM,NODE,LITERAL,FIXLIT,FLOATLIT,CONSTANT,REGISTER
|
|
CHARACTER*32 LOCAL_LABEL
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Operator value definitions.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER OP_NOP=0,
|
|
# OP_ADD=1,OP_SUB=2,OP_MUL=3,OP_DIV=4,OP_ADWC=5,OP_SBWC=6,
|
|
# OP_NEG=7,OP_NOT=8,OP_EXT=9,OP_OR=10,OP_XOR=11,OP_LT=12,
|
|
# OP_GT=13,OP_EQ=14,OP_NE=15,OP_LE=16,OP_GE=17,OP_LOC=18,
|
|
# OP_ASSN=19,OP_MOD=20,OP_THEN=21,OP_BIT=22,OP_ALSO=23,
|
|
# OP_CALL=24,OP_ARG=25,OP_AND=26,OP_MOV=27,
|
|
# OP_SIGNED=71,OP_UNSIGNED=72,
|
|
# OP_BYTE=81,OP_WORD=82,OP_INTEGER=83,OP_PTR=84,
|
|
# OP_REAL=85,OP_LONG=86,OP_DOUBLE=87,OP_QUAD=88,
|
|
# OP_B2W=101,OP_B2I=102,OP_B2L=103,OP_B2R=104,OP_W2B=105,
|
|
# OP_W2L=106,OP_I2B=107,OP_I2R=108,OP_I2L=109,OP_R2L=110,
|
|
# OP_R2I=111,OP_L2W=112,OP_L2R=113,OP_L2B=114,OP_R2B=115,
|
|
# OP_R2W=116,OP_L2D=117,OP_L2Q=118,OP_R2D=119,OP_D2B=120,
|
|
# OP_D2I=121,OP_D2R=122,OP_D2L=123,OP_Q2L=124,OP_I2D=125,
|
|
# OP_L2P=126,OP_P2L=127,
|
|
# OP_BNE=201,OP_BLB=202,OP_BB=203
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Program section definitions.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER P_MAX=100
|
|
PARAMETER P_CONSTANTS=1,P_STACK=2,P_DATA=3,P_CODE=4,P_FREQ=5,
|
|
# P_VECTOR=6,P_APD=7,P_MEMORY=8
|
|
CHARACTER*32 PSECT_NAME(P_CONSTANTS:P_MAX),BASEC
|
|
CHARACTER*3 BASEV
|
|
COMMON /PSECTC/ BASEC,BASEV,PSECT_NAME
|
|
DATA PSECT_NAME
|
|
// '$PLM_ROM','$DGROUP_STACK','$DGROUP_DATA'
|
|
,, '$PLM_CODE','$PLM_FREQ','$CGROUP_VECTOR'
|
|
,, '$PLM_APD','MEMORY'
|
|
,, 92*' '
|
|
//
|
|
|
|
INTEGER*2 NC
|
|
COMMON /PSECTS/ NC
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Compiler listing stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
REAL*4 VERSION
|
|
LOGICAL*1 LISTING_TO_TERMINAL,LAST_LINE_EXISTS
|
|
COMMON /LIST/ LIST_LINE_NO,LIST_STNO,LIST_BLOCK_LEVEL,
|
|
# PREVIOUS_STNO,LINE_OF_PAGE,PAGE_NO,VERSION,
|
|
# LINES_READ,ERRORS,WARNINGS,LISTING_TO_TERMINAL,
|
|
# FIFO_DEPTH,LAST_LINE_EXISTS
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Symbol table hash buckets.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
INTEGER*2 HASH_BUCKET(0:210)
|
|
COMMON /HASH/ HASH_BUCKET,FIRST_KEYWORD
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Procedure scope structures.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER PROC_MAX=16 ! MAX STATIC NESTING DEPTH OF PROCS.
|
|
PARAMETER PROC_MAIN=1,PROC_EXT=2,PROC_FORWARD=4,PROC_REENT=8
|
|
|
|
INTEGER*2 PROC_FLAGS(PROC_MAX),PROC_DYN_OFF(PROC_MAX),
|
|
# PROC_INDEX(PROC_MAX),PROC_DYN_INDEX(PROC_MAX),
|
|
# PROC_ENTRY_MASK(PROC_MAX),PROC_ENTRY_INDEX(PROC_MAX),
|
|
# PROC_AP(0:PROC_MAX)
|
|
COMMON /PROCS/ PROC_LEVEL,PROC_FLAGS,PROC_DYN_OFF,PROC_INDEX,
|
|
# PROC_DYN_INDEX,PROC_ENTRY_MASK,PROC_ENTRY_INDEX,
|
|
# PROC_AP
|
|
DATA PROC_LEVEL/1/, PROC_FLAGS(1)/PROC_MAIN/,
|
|
# PROC_AP(0)/1/, PROC_AP(1)/1/
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Path analysis stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
LOGICAL*4 PATH
|
|
COMMON /PATH_ANALYSIS/ PATH
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C GLOBALS symbol table stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
PARAMETER GBL_MAX=800 ! MAX # OF GLOBALLY INPUT SYMBOLS.
|
|
CHARACTER*32 GLOBAL_SYMBOL(GBL_MAX)
|
|
INTEGER*2 LAST_GLOBAL
|
|
COMMON /GLOBALS/ LAST_GLOBAL
|
|
COMMON /GLOBALC/ GLOBAL_SYMBOL
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Basic block analysis stuff.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
LOGICAL*4 END_OF_BASIC_BLOCK
|
|
INTEGER*2 BASIC_BLOCK
|
|
INTEGER*2 EXTERNAL_SERIAL_DELTA,BASED_SERIAL_DELTA,
|
|
# SUBSCRIPTED_SERIAL_DELTA,OVERLAID_SERIAL_DELTA
|
|
COMMON /BASIC_BLOCKS/ END_OF_BASIC_BLOCK,BASIC_BLOCK,
|
|
# EXTERNAL_SERIAL_DELTA,BASED_SERIAL_DELTA,
|
|
# SUBSCRIPTED_SERIAL_DELTA,OVERLAID_SERIAL_DELTA
|
|
|
|
C-----------------------------------------------------------------------
|
|
C
|
|
C Assumption flags.
|
|
C
|
|
C-----------------------------------------------------------------------
|
|
LOGICAL*1 ASSUME_SCE,ASSUME_CSE,ASSUME_EEQ,ASSUME_PSE,
|
|
# ASSUME_BRO,ASSUME_BBA,ASSUME_CTE,ASSUME_MCO,
|
|
# ASSUME_CFA,ASSUME_SWB,ASSUME_OSR,ASSUME_SVE,
|
|
# ASSUME_S64,ASSUME_C7F,ASSUME_DBG
|
|
|
|
COMMON /ASSUMPTIONS/
|
|
# ASSUME_SCE,ASSUME_CSE,ASSUME_EEQ,ASSUME_PSE,
|
|
# ASSUME_BRO,ASSUME_BBA,ASSUME_CTE,ASSUME_MCO,
|
|
# ASSUME_CFA,ASSUME_SWB,ASSUME_OSR,ASSUME_SVE,
|
|
# ASSUME_S64,ASSUME_C7F,ASSUME_DBG
|
|
|