*** empty log message ***

This commit is contained in:
sater 1984-12-17 15:13:39 +00:00
parent ea8e311e5a
commit d267037189
15 changed files with 247 additions and 0 deletions

7
util/ncgg/assert.h Normal file
View file

@ -0,0 +1,7 @@
/* $Header$ */
#ifndef NDEBUG
#define assert(x) if (!(x)) badassertion("x",__FILE__,__LINE__)
#else
#define assert(x) /* nothing */
#endif

8
util/ncgg/cost.h Normal file
View file

@ -0,0 +1,8 @@
/* $Header$ */
#define _COST_
typedef struct cost {
int ct_space;
int ct_time;
} cost_t,*cost_p;

16
util/ncgg/expr.h Normal file
View file

@ -0,0 +1,16 @@
/* $Header$ */
typedef struct expr {
int ex_typ;
short ex_regset[SZOFSET(MAXREGS)];
int ex_index;
} expr_t,*expr_p;
#define TYPINT 1
#define TYPBOOL 2
#define TYPADDR 3
#define TYPREG 4
/* When the type is register the regset contains the set of
possible registers for checking purposes only.
*/

30
util/ncgg/extern.h Normal file
View file

@ -0,0 +1,30 @@
/* $Header$ */
extern int wordsize;
extern int pointersize;
extern int nregs;
extern int nprops;
extern int ntokens;
extern int nsets;
extern int ninstr;
extern int empatlen;
extern int emmnem[];
extern int empatexpr;
extern int codeindex;
extern int tokpatlen;
extern int tokpatro[];
extern int tokpatset[];
extern int nallreg;
extern int allreg[];
extern int cursetno;
extern int allsetno;
extern int inproc;
extern int callproc;
extern int procarg[2];
extern int fc1,fc2,fc3,fc4;
extern int maxmembers;
extern int regclass;
extern int maxtokensize;
extern char *mystrcpy();
extern char *myalloc();

37
util/ncgg/instruct.h Normal file
View file

@ -0,0 +1,37 @@
/* $Header$ */
#ifndef _COST_
#include "cost.h"
#endif
#define AD_RO 01 /* Read only operand */
#define AD_WO 02 /* Write only operand */
#define AD_RW 03 /* Read-write operand */
#define AD_RWMASK 03 /* Mask to select these possiblities */
#define AD_CC 04 /* Condition codes set to this one */
typedef struct operand {
struct operand *o_next;
short o_setno;
short o_adorn;
} operand;
typedef struct instruction {
char *i_name;
short i_asname;
short i_nops;
operand *i_oplist;
struct varinfo *i_erases;
cost_t i_cost;
} instr_t,*instr_p;
extern instr_t l_instr[];
/*
* The read only information on the operands is not used at the moment.
* Predicted future use:
* When using :ro data it is possible to use a register in its stead
* if it contains the same information and is allowed as an operand
* in this place. Too difficult for now.
*/

6
util/ncgg/iocc.h Normal file
View file

@ -0,0 +1,6 @@
/* $Header$ */
typedef struct iocc {
short in_set[SETSIZE];
int in_index;
} iocc_t,*iocc_p;

29
util/ncgg/lookup.h Normal file
View file

@ -0,0 +1,29 @@
/* $Header$ */
typedef enum {
justlooking,mustexist,newsymbol,makeexist
} lookupstyle;
typedef enum {
symany,symkeyw,symconst,symsconst,symprop,symreg,symtok,symset,symproc
} symtype;
typedef struct symbol {
struct symbol *sy_next; /* pointer to hashchain */
char *sy_name; /* symbol */
symtype sy_type; /* type */
union {
long syv_cstval;
int syv_stringno;
int syv_keywno;
int syv_propno;
int syv_regno;
int syv_tokno;
int syv_setno;
int syv_procoff;
} sy_value;
} symbol;
#define NSYMHASH 61
extern symbol *symhash[NSYMHASH]; /* chained hashtable */
extern symbol *lookup();

38
util/ncgg/param.h Normal file
View file

@ -0,0 +1,38 @@
/* $Header$ */
/*
* Miscellaneous sizes, tunable
*/
#define MAXREGS 40
#define MAXPROPS 30
#define MAXTOKENS 60
#define MAXATT 3
#define MAXSETS 100
#define MAXINSTR 100
#define MAXSTRINGS 250
#define MAXNODES 300
#define EMPATMAX 20
#define MAXPATTERNS 20
#define MAXALLREG 5
#define MAXINSTANCES 300
#define MAXMOVES 20
#define MAXTESTS 10
#define MAXSTACKS 30
#define MAXCOERCS 25
#define MAXSPLCOERC 20
#define MAXSPLIT 2
#define MAXPATBYTES 7000
#define MAXREGVAR 8
#define MAXSOURCELINES 4000
/* end of tunable constants */
#define TOKPATMAX 7
#define SZOFSET(n) (((n)+15)/16)
#define SETSIZE SZOFSET(MAXREGS+MAXTOKENS)
#define NEXT(n,max,string) (n<max? n++ : tabovf(string))
#define NEW(x,y) x=(y*)myalloc(sizeof(*(x)))

8
util/ncgg/property.h Normal file
View file

@ -0,0 +1,8 @@
/* $Header$ */
typedef struct propinfo {
int pr_size;
short pr_regset[SZOFSET(MAXREGS)];
} propinfo;
extern struct propinfo l_props[];

8
util/ncgg/pseudo.h Normal file
View file

@ -0,0 +1,8 @@
/* $Header$ */
#define INSMOVE (-1)
#define INSTEST (-2)
#define INSPRETURN (-3)
#define INSTLAB (-4)
#define INSSETCC (-5)
#define INSERASE (-6)

13
util/ncgg/reg.h Normal file
View file

@ -0,0 +1,13 @@
/* $Header$ */
#define _REGINFO_
typedef struct reginfo {
char *ri_name;
char *ri_repr;
int ri_size;
int ri_class;
int ri_rregvar;
int ri_memb[2];
} reginfo;
extern struct reginfo l_regs[];

10
util/ncgg/regvar.h Normal file
View file

@ -0,0 +1,10 @@
/* $Header$ */
#define ANY_REGVAR 0x1
#define SL_REGVAR 0x2
#define DL_REGVAR 0x4
extern int rvused;
extern int nregvar[4];
extern int rvsize[4];
extern int rvnumbers[4][MAXREGVAR];

5
util/ncgg/set.h Normal file
View file

@ -0,0 +1,5 @@
/* $Header$ */
#define BIS(sp,n) (sp)[(n)>>4] |= 1<<((n)&0xF)
#define BIC(sp,n) (sp)[(n)>>4] &= ~(1<<((n)&0xF))
#define BIT(sp,n) (((sp)[(n)>>4]&(1<<((n)&0xF)))!=0)

19
util/ncgg/token.h Normal file
View file

@ -0,0 +1,19 @@
/* $Header$ */
#ifndef _COST_
#include "cost.h"
#endif
typedef struct token {
char *tk_name;
int tk_size;
cost_t tk_cost;
struct {
int ta_type; /* -1 is int, -2 is addr, >=0 is propno */
char *ta_name;
} tk_att[MAXATT];
int tk_format;
} token_t,*token_p;
extern token_p l_tokens[MAXTOKENS];

13
util/ncgg/varinfo.h Normal file
View file

@ -0,0 +1,13 @@
/* $Header$ */
#define VI_NSTR 1
#define VI_NINT 3
typedef struct varinfo {
struct varinfo *vi_next;
char *vi_str[VI_NSTR];
int vi_int[VI_NINT];
struct varinfo *vi_vi;
} varinfo;
#define VI_NULL (struct varinfo *) 0