xref: /csrg-svn/usr.bin/pascal/src/tmps.h (revision 11339)
1*11339Speter /* Copyright (c) 1983 Regents of the University of California */
2*11339Speter 
3*11339Speter /* static	char sccsid[] = "@(#)tmps.h 1.1 02/28/83"; */
4*11339Speter 
5*11339Speter /*
6*11339Speter  * The following structure is used
7*11339Speter  * to keep track of the amount of variable
8*11339Speter  * storage required by each block.
9*11339Speter  * "Max" is the high water mark, "off"
10*11339Speter  * the current need. Temporaries for "for"
11*11339Speter  * loops and "with" statements are allocated
12*11339Speter  * in the local variable area and these
13*11339Speter  * numbers are thereby changed if necessary.
14*11339Speter  *
15*11339Speter  * for the compiler,
16*11339Speter  *	low_water is the lowest number register allocated of its type
17*11339Speter  *	next_avail is the next available register of its type
18*11339Speter  */
19*11339Speter 
20*11339Speter #ifdef PC
21*11339Speter #ifdef vax
22*11339Speter     /*
23*11339Speter      *	the number of register types.
24*11339Speter      *	the details of how many of each kind of register there is
25*11339Speter      *	(and what they are for) is known in tmps.c
26*11339Speter      */
27*11339Speter #define	NUMREGTYPES	1
28*11339Speter #define	REG_GENERAL	0
29*11339Speter #endif vax
30*11339Speter 
31*11339Speter #ifdef mc68000
32*11339Speter     /*
33*11339Speter      *	the number of register types.
34*11339Speter      *	the details of how many of each kind of register there is
35*11339Speter      *	(and what they are for) is known in tmps.c
36*11339Speter      */
37*11339Speter #define	NUMREGTYPES	2
38*11339Speter #define	REG_DATA	0
39*11339Speter #define	REG_ADDR	1
40*11339Speter #endif mc68000
41*11339Speter #endif PC
42*11339Speter 
43*11339Speter struct om {
44*11339Speter 	long	om_max;
45*11339Speter #ifdef PC
46*11339Speter 	long	low_water[NUMREGTYPES];
47*11339Speter #endif PC
48*11339Speter 	struct tmps {
49*11339Speter 	    long	om_off;
50*11339Speter #ifdef PC
51*11339Speter 	    long	next_avail[NUMREGTYPES];
52*11339Speter #endif PC
53*11339Speter 	}	curtmps;
54*11339Speter } sizes[DSPLYSZ];
55*11339Speter 
56*11339Speter     /*
57*11339Speter      *	an enumeration for whether a temporary can be a register.  cf. tmps.c
58*11339Speter      */
59*11339Speter #define NOREG 0
60*11339Speter #define REGOK 1
61