xref: /csrg-svn/usr.bin/pascal/src/tmps.h (revision 22252)
1*22252Sdist /*
2*22252Sdist  * Copyright (c) 1980 Regents of the University of California.
3*22252Sdist  * All rights reserved.  The Berkeley software License Agreement
4*22252Sdist  * specifies the terms and conditions for redistribution.
5*22252Sdist  *
6*22252Sdist  *	@(#)tmps.h	5.1 (Berkeley) 06/05/85
7*22252Sdist  */
811339Speter 
911339Speter /*
1011339Speter  * The following structure is used
1111339Speter  * to keep track of the amount of variable
1211339Speter  * storage required by each block.
1311339Speter  * "Max" is the high water mark, "off"
1411339Speter  * the current need. Temporaries for "for"
1511339Speter  * loops and "with" statements are allocated
1611339Speter  * in the local variable area and these
1711339Speter  * numbers are thereby changed if necessary.
1811339Speter  *
1911339Speter  * for the compiler,
2011339Speter  *	low_water is the lowest number register allocated of its type
2111339Speter  *	next_avail is the next available register of its type
2211339Speter  */
2311339Speter 
2411339Speter #ifdef PC
2511339Speter #ifdef vax
2611339Speter     /*
2711339Speter      *	the number of register types.
2811339Speter      *	the details of how many of each kind of register there is
2911339Speter      *	(and what they are for) is known in tmps.c
3011339Speter      */
3111339Speter #define	NUMREGTYPES	1
3211339Speter #define	REG_GENERAL	0
3311339Speter #endif vax
3411339Speter 
3511339Speter #ifdef mc68000
3611339Speter     /*
3711339Speter      *	the number of register types.
3811339Speter      *	the details of how many of each kind of register there is
3911339Speter      *	(and what they are for) is known in tmps.c
4011339Speter      */
4111339Speter #define	NUMREGTYPES	2
4211339Speter #define	REG_DATA	0
4311339Speter #define	REG_ADDR	1
4411339Speter #endif mc68000
4511339Speter #endif PC
4611339Speter 
4711339Speter struct om {
4811339Speter 	long	om_max;
4911339Speter #ifdef PC
5011339Speter 	long	low_water[NUMREGTYPES];
5111339Speter #endif PC
5211339Speter 	struct tmps {
5311339Speter 	    long	om_off;
5411339Speter #ifdef PC
5511339Speter 	    long	next_avail[NUMREGTYPES];
5611339Speter #endif PC
5711339Speter 	}	curtmps;
5811339Speter } sizes[DSPLYSZ];
5911339Speter 
6011339Speter     /*
6111339Speter      *	an enumeration for whether a temporary can be a register.  cf. tmps.c
6211339Speter      */
6311339Speter #define NOREG 0
6411339Speter #define REGOK 1
65