Pristine Ack-5.5
[Ack-5.5.git] / mach / proto / cg / extern.h
1 /*
2  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3  * See the copyright notice in the ACK home directory, in the file "Copyright".
4  */
5 /* $Id: extern.h,v 2.4 1994/06/24 13:23:35 ceriel Exp $ */
6
7 extern int maxply;                      /* amount of lookahead allowed */
8 extern int stackheight;                 /* # of tokens on fakestack */
9 extern token_t fakestack[];             /* fakestack itself */
10 extern int nallreg;                     /* number of allocated registers */
11 extern int allreg[];                    /* array of allocated registers */
12 extern token_p curtoken;                /* pointer to current token */
13 extern result_t dollar[];               /* Values of $1,$2 etc.. */
14 extern int nemlines;                    /* # of EM instructions in core */
15 extern struct emline emlines[];         /* EM instructions itself */
16 extern struct emline *emp;              /* pointer to current instr */
17 extern struct emline *saveemp;          /* pointer to start of pattern */
18 extern int tokpatlen;                   /* length of current stackpattern */
19 extern rl_p curreglist;                 /* side effect of findcoerc() */
20 #ifndef NDEBUG
21 extern int Debug;                       /* on/off debug printout */
22 #endif
23
24 /*
25  * Next descriptions are external declarations for tables created
26  * by bootgram.
27  * All definitions are to be found in tables.c (Not for humans)
28  */
29
30 extern byte coderules[];                /* pseudo code for cg itself */
31 extern char stregclass[];               /* static register class */
32 extern struct reginfo machregs[];       /* register info */
33 extern tkdef_t tokens[];                /* token info */
34 extern node_t enodes[];                 /* expression nodes */
35 extern string codestrings[];            /* table of strings */
36 extern set_t machsets[];                /* token expression table */
37 extern inst_t tokeninstances[];         /* token instance description table */
38 extern move_t moves[];                  /* move descriptors */
39 extern byte pattern[];                  /* EM patterns */
40 extern int pathash[256];                /* Indices into previous */
41 extern c1_t c1coercs[];                 /* coercions type 1 */
42 #ifdef MAXSPLIT
43 extern c2_t c2coercs[];                 /* coercions type 2 */
44 #endif /* MAXSPLIT */
45 extern c3_t c3coercs[];                 /* coercions type 3 */
46 extern struct reginfo **reglist[];      /* lists of registers per property */
47
48 #define eqregclass(r1,r2) (stregclass[r1]==stregclass[r2])
49
50 #ifdef REGVARS
51 extern int nregvar[];                   /* # of register variables per type */
52 extern int *rvnumbers[];                /* lists of numbers */
53 #endif