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