(* Copyright (C) 1992, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* File: Target.i3.IBMR2 *) (* Last Modified On Thu Nov 12 15:30:17 PST 1992 By kalsow *) (* Modified On Mon Mar 11 22:19:02 1991 By muller *) (* Modified On Fri May 11 1990 By orgass@ibm.com *) INTERFACE Target; (* for IBMR2 *) (* This interface describes the target architecture *) CONST (* integers *) INTSIZE = 32; INTALIGN = 32; MAXINT = 2147483647; MININT = (- 2147483647) - 1; (* shorts *) SHORTSIZE = 16; SHORTALIGN = 16; MAXSHORT = 32767; MINSHORT = -32768; MAXUSHORT = 65535; MINUSHORT = 0; (* characters *) CHARSIZE = 8; CHARALIGN = 8; MAXCHAR = 255; MINCHAR = 0; MAXSCHAR = 127; MINSCHAR = -128; MAXUCHAR = 255; MINUCHAR = 0; (* booleans *) BOOLSIZE = 8; BOOLALIGN = 8; (* reals *) REALSIZE = 32; REALALIGN = 32; MAXREAL = "3.4028234663852886e+38"; MINREAL = "-3.4028234663852886e+38"; (* MINPOSREAL = 1.1754943508222875e-38; *) (* longreals *) LONGREALSIZE = 64; LONGREALALIGN = 32; (* this is true for the AIX xlc compiler EXCEPT * when the double word quantity is the first * element of a struct. Then, the entire struct * is double word aligned. Records that begin * with a double word quantity might break. *) MAXLONGREAL = "1.79769313486231570e+308"; MINLONGREAL = "-1.79769313486231570e+308"; (* MINPOSLONGREAL = 2.2250738585072014e-308; *) (* extended reals *) EXTENDEDSIZE = LONGREALSIZE; EXTENDEDALIGN = LONGREALALIGN; MAXEXTENDED = MAXLONGREAL; MINEXTENDED = MINLONGREAL; (* addresses *) ADDRSIZE = 32; ADDRALIGN = 32; ADDRUNIT = 8; (* C structures *) PCCBITFIELDTYPEMATTERS = FALSE; (* use the type rather than the size of a bit-field to compute alignment *) STRUCTURESIZEBOUNDARY = 8; (* every structure size must be a multiple of this *) BITFIELDCANOVERLAP = FALSE; (* a bit field cannot overlap two adjacent storage units *) (* NIL checking *) FIRSTREADABLEADDR = 0; (* Read or write references to addresses in the range [0..FIRSTREADABLE-1] will cause an address faults. Hence, no explicit NIL checks are needed for dereferencing with offsets in this range. *) (* Thread stacks *) JumpBufSize = 64 * ADDRSIZE; (* size of a "jmp_buf" *) FixedFrameSize = 14 * ADDRSIZE; (* size of an "empty" stack frame *) GuardPageSize = 0; (* size of the "unmapped" region at the end of a thread stack *) (* These parameters are used to estimate the size each procedure's frame. If the estimated size of a procedure's frame is less than the guard page's size, no explict check for stack overflow is needed. *) END Target.