Trailing-Edge
-
PDP-10 Archives
-
SRI_NIC_PERM_FS_1_19910112
-
c/kcc/ccdata.c
There are 8 other files named ccdata.c in the archive. Click here to see a list.
/* CCDATA.C - KCC data allocations for vars and tables
**
** (c) Copyright Ken Harrenstien 1989
** All changes after v.166, 29-Apr-1988
** (c) Copyright Ken Harrenstien, SRI International 1985, 1986
** All changes after v.76, 8-Aug-1985
*/
#include "ccsite.h" /* Get our site-dependent stuff */
/* Define various externals here */
#define EXT /* Define various externals. Note that this */
#include "cc.h" /* also includes ccparm.h for our size parameters! */
#include "cclex.h" /* More externals */
/* Version numbers (not switches -- cannot change at runtime).
** cverdist is incremented whenever cvercode or cverlib is, or when
** a new major KCC distribution is made.
** cverkcc ideally should be updated every time a new .EXE is made and
** should match the file version number. This may have to be patched in
** after compilation.
*/
int cvercode = 2; /* Current C code version (for $$CVER) */
int cverlib = 3; /* Current C library version (for $$CVER) */
int cverdist = 6; /* Major KCC distrib version (info only) */
int cverkcc = 620; /* KCC.EXE file version (rev #) (info only) */
/*
** Switch-dependent variables - initial default values
*/
int clevel = SWI_CLEV; /* Default C implementation level */
int clevkcc = 1; /* Always default to ask for KCC extensions */
int tgcpu[TGCPU_N] = SWI_TGCPUS;/* Target CPU types (default to source) */
int tgsys = SWI_TGSYS; /* Target System type (default to source) */
int tgasm = SWI_TGASM; /* Target Assembler type (site-dep default) */
int tgcsize = TGSIZ_CHAR; /* Target Char size in bits */
int tgcpw = TGSIZ_WORD/TGSIZ_CHAR; /* Target # Chars Per Word */
int tgcmask = (1<<TGSIZ_CHAR)-1; /* Target Char Mask */
int npredef = 0; /* -Dmac=d # of -D macro predefinitions */
int npreundef = 0; /* -Umac # of -U macro pre-undefinitions */
int nincpaths = 0; /* -Ipath # of "" include-file directories */
int nhfpaths = 0; /* -Hpath # of <> include-file dirs */
int nhfsypaths = 0; /* -hpath # of <sys/> include-file dirs */
char *predefs[MAXPREDEF]; /* Pointers to -D macro predefs */
char *preundefs[MAXPREDEF]; /* Pointers to -U macro pre-undefs */
char *incpaths[MAXINCDIR]; /* Pointers to -I search paths ("") */
char *hfpaths[MAXINCDIR]; /* -H search paths (<>) */
char *hfsypaths[MAXINCDIR]; /* -h search paths (<sys/>) */
char *ihfpaths[] = { SWI_HFPATH }; /* Default -H search paths <> */
char *ihfsypaths[] = { SWI_HFSYPATH }; /* Default -h search paths <sys/> */
int nihfpaths = sizeof(ihfpaths)/sizeof(ihfpaths[0]); /* # of deflt paths */
int nihfsypaths = sizeof(ihfsypaths)/sizeof(ihfsypaths[0]);
char *libpath = SWI_LIBPATH; /* Where to find -l library files */
char *asmhfile = SWI_ASMHFILE; /* User-specified asm hdr file loc */
char *asmtfile = SWI_ASMTFILE; /* Temp filename to use for #asm */
/* (this should disappear someday!) */
/* Loader psect default specifications */
struct psect ldpsdata = { PSDATA_BEG, PSCODE_BEG-PSDATA_BEG, PSCODE_BEG-1 };
struct psect ldpscode = { PSCODE_BEG, PSCODE_END-PSCODE_BEG, PSCODE_END-1 };
struct psect ldpsstack = { 0, 0, 0 }; /* For now */
/* Table storage allocation and more definitions */
/* Allocate storage for tables in cc.h */
NODE nodes[MAXNODE]; /* Allocate parse tree node table */
SYMBOL *htable[MAXHSH]; /* Symbol hash table */
TYPE *ttable[THASHSIZE]; /* hash table of types */
TYPE types[MAXTYPE]; /* table of types */
#define CHARTABLE /* Make ctftab[] table */
#include "ccchar.h"
#define GEXT /* Define stuff */
#include "ccgen.h" /* and make codes[MAXCODE] table */
/* Output string table of PDP-10 pseudo-ops, indexed by P_ vals */
char *popostr[] = {
#define opcode(iname,oname,f,a,b,c,d) oname,
#include "cccode.h"
#undef opcode
};
/* Flag table for PDP-10 pseudo-ops, indexed by P_ vals */
int popflg[] = {
#define opcode(iname,oname,f,a,b,c,d) f,
#include "cccode.h"
#undef opcode
};
/* Reg change table for PDP-10 pseudo-ops, indexed by P_ vals */
int popprc[] = {
#define opcode(iname,oname,f,prcf,b,c,d) prcf,
#include "cccode.h"
#undef opcode
};
/* Various tables for dealing with C data types */
/* Make tfltab[] table for parser/generator.
** Note that this is where the TF_BYTE flag gets added in.
*/
int tfltab[] = {
#define typespec(ts,str,bsiz,fl) \
fl | ((bsiz && bsiz < TGSIZ_WORD) ? TF_BYTE : 0),
alltypemacro /* Expand list of types from CCSYM.H */
#undef typespec
0,0,0 /* Permit lookup of flags (0) for param types */
};
char *tsnames[] = {
#define typespec(ts,str,bsiz,fl) str,
alltypemacro /* Expand list of types from CCSYM.H */
#undef typespec
};
/* TYPSIZTAB - Type size tables.
** This is somewhat machine-dependent and so may someday be moved
** to a CCTARG machine-specific file. There is one entry for each basic type.
** Observe that (somewhat unfortunately) sizes here are expressed in
** terms of words, not bytes such as sizeof would return.
** The TYPBSIZTAB table is in terms of bits, not words or bytes.
** These two tables should only be referenced by CCSYM.
*/
int typsiztab[TS_MAX] = {
#define typespec(ts,str,bsiz,fl) ((bsiz+TGSIZ_WORD-1) / TGSIZ_WORD),
alltypemacro /* Expand list of types from CCSYM.H */
#undef typespec
};
int typbsiztab[TS_MAX] = {
#define typespec(ts,str,bsiz,fl) bsiz,
alltypemacro /* Expand list of types from CCSYM.H */
#undef typespec
};
/* Table of pointers to oft-used basic types such as int, char, etc.
** Initialized by CCSYM. Some "variables" such as inttype are
** actually macros which point to entries in this table. Not all types
** have their entries initialized.
*/
TYPE *typeptr[TS_MAX];
/*
** Tokens.
**
** This table is referenced by CCDECL, CCGEN, CCSTMT.
** It is indexed by the token/node-op value (T_,Q_,N_).
** See the included file for details on the values.
*/
/* Define a table of token/node types & precs */
TOKEN tok[] = {
#define tokdef(name,str,type,prec) type,prec,
#include "cctoks.h"
#undef tokdef
};
/* Backward compatibility hack, see whether using old preprocessor (which
** allowed parameters within string & char constants) or new one (which
** doesn't, but does have the # stringize operator).
*/
#define testcat(a) 'a'
#define OLDPP ('X' == testcat(X)) /* TRUE if using old PP */
/* Define a table of token/node op names. */
char *nopname[] = {
#if OLDPP
#define tokdef(n,s,t,p) "n", /* Old PP with param in string lit */
#else
#define tokdef(n,s,t,p) #n, /* New ANSI PP with stringize op! */
#endif
#include "cctoks.h" /* Get the data */
#undef tokdef
};
/* Define a table of token strings. */
char *tokstr[] = {
#define tokdef(n,s,t,p) s,
#include "cctoks.h"
#undef tokdef
};