home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / pascal / src / tmps.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-16  |  3.3 KB  |  102 lines

  1. /*-
  2.  * Copyright (c) 1980 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)tmps.h    5.3 (Berkeley) 4/16/91
  34.  */
  35.  
  36. /*
  37.  * The following structure is used
  38.  * to keep track of the amount of variable
  39.  * storage required by each block.
  40.  * "Max" is the high water mark, "off"
  41.  * the current need. Temporaries for "for"
  42.  * loops and "with" statements are allocated
  43.  * in the local variable area and these
  44.  * numbers are thereby changed if necessary.
  45.  *
  46.  * for the compiler,
  47.  *    low_water is the lowest number register allocated of its type
  48.  *    next_avail is the next available register of its type
  49.  */
  50.  
  51. #ifdef PC
  52. #ifdef vax
  53.     /*
  54.      *    the number of register types.
  55.      *    the details of how many of each kind of register there is
  56.      *    (and what they are for) is known in tmps.c
  57.      */
  58. #define    NUMREGTYPES    1
  59. #define    REG_GENERAL    0
  60. #endif vax
  61.  
  62. #ifdef tahoe
  63.     /*
  64.      *    the number of register types.
  65.      *    the details of how many of each kind of register there is
  66.      *    (and what they are for) is known in tmps.c
  67.      */
  68. #define    NUMREGTYPES    1
  69. #define    REG_GENERAL    0
  70. #endif tahoe
  71.  
  72. #ifdef mc68000
  73.     /*
  74.      *    the number of register types.
  75.      *    the details of how many of each kind of register there is
  76.      *    (and what they are for) is known in tmps.c
  77.      */
  78. #define    NUMREGTYPES    2
  79. #define    REG_DATA    0
  80. #define    REG_ADDR    1
  81. #endif mc68000
  82. #endif PC
  83.  
  84. struct om {
  85.     long    om_max;
  86. #ifdef PC
  87.     long    low_water[NUMREGTYPES];
  88. #endif PC
  89.     struct tmps {
  90.         long    om_off;
  91. #ifdef PC
  92.         long    next_avail[NUMREGTYPES];
  93. #endif PC
  94.     }    curtmps;
  95. } sizes[DSPLYSZ];
  96.  
  97.     /*
  98.      *    an enumeration for whether a temporary can be a register.  cf. tmps.c
  99.      */
  100. #define NOREG 0
  101. #define REGOK 1
  102.