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