blob: ae644e5892c007010241e0d1c7dc91237e7ecd83 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#define kCopyStringLength 512
#define MaxUnsigned 65535
/* The maximum arity of tuples is defined by MaxTupleArity */
#define MaxNodeArity 32
#define MaxGeneratedIdentSize 512
/* The scanner maintains a buffer for holding identifiers and literals whereof the
size is indicated by ScanBuffSize
*/
#define ScanBuffSize (KBYTE*32)
/* Identifiers may cantain upto IdLength characters */
#define IdLength 256
/* The actual size of the id-buffer is greater than the IdLength.
This allows us to add extensions of length 4 to identifiers
(used in module names) */
#define MaxIdLength ((SizeT) (IdLength + 4))
#define MaxStrLength 256 /* maximum number of characters in a string */
#define MaxCharLength 6 /* maximum number of chararcters in a character denotation */
#define MaxNrOfDigits 80 /* maximum number of digits in a real */
#define MaxNumLength (MaxNrOfDigits + 4) /* maximum number of characters in a real
or integer denotation */
#define MaxInstrLength 256 /* maximum number of characters in an instruction */
/* Identifiers and literals are stored in different tables. The size of these tables
are given below */
#define SymbTabSize ((SizeT) KBYTE)
#define NodeTabSize ((SizeT) KBYTE)
#define ModTabSize ((SizeT) 32)
#define LitTabSize ((SizeT) KBYTE)
/*
Compsupport
*/
/* The compiler uses its own storage administration. When some storage is required
it is checked whether or not this storage is available. If not, a new memory
block of size MemBlockSize is allocated. Keeping the size large will slightly
increase the performance of the memory allocator.
*/
#ifdef __MWERKS__
# define MemBlockSize ((SizeT) (16*KBYTE))
#else
# define MemBlockSize ((SizeT) (32*KBYTE))
#endif
#define TH_BlockSize ((SizeT) (16*KBYTE))
/* TypeChecker */
/* For efficient internal garbage collection the type checker uses its own storage
administration. The constant TCWorkSpaceSize has the same function as MemBlockSize
in comsupport.
*/
#define TCWorkSpaceSize ((SizeT) (16*KBYTE))
/* Code Generator */
/* The size of objects expressed in amounts of stack entries are given below */
#define SizeOfInt 1
#define SizeOfBool 1
#define SizeOfChar 1
#define SizeOfReal REALSIZE
#define SizeOfFile FILESIZE
#define SizeOfVoid 1
#define SizeOfProcId 1
#define SizeOfAStackElem 1
#define NrOfGlobalSelectors 6
/* Inline instruction administration (part of the code generator) */
#define LineLength 300 /* maximum number of charcters on one line */
#define MaxInlineInstr 60 /* maximum number of instructions that may be
substituted for one system call */
#define InlineBuffSize ((SizeT) KBYTE * 32) /* the size of the buffer
containing all the inline instructions */
|