166 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
.sp 1.5i
 | 
						|
.NH
 | 
						|
Compiler options
 | 
						|
.nh
 | 
						|
.PP
 | 
						|
There are some options available to control the behaviour of the compiler.
 | 
						|
Two types of options can be distinguished: compile-time options and
 | 
						|
run-time options.
 | 
						|
.sp
 | 
						|
.NH 2
 | 
						|
Compile time options
 | 
						|
.LP
 | 
						|
.sp
 | 
						|
There are some options that can be set when the compiler is installed.
 | 
						|
Those options can be found in the file \fIParameters\fR. To set a parameter
 | 
						|
just modify its definition in the file \fIParameters\fR. The shell script
 | 
						|
in the file \fImake.hfiles\fR creates for each parameter a separate .h file.
 | 
						|
This mechanism is derived from the C compiler in ACK.
 | 
						|
.sp
 | 
						|
\fBIDFSIZE\fR
 | 
						|
.in +3m
 | 
						|
The maximum number of characters that are significant in an identifier. This
 | 
						|
value has to be at least the value of \fBMINIDFSIZE\fR, defined in the file
 | 
						|
\fIoptions.c\fR. A compile-time check is included to see if the value of
 | 
						|
\fBMINIDFSIZE\fR is legal. The compiler will not recognize some keywords
 | 
						|
if \fBIDFSIZE\fR is too small.
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
\fBISTRSIZE\fR, \fBRSTRSIZE\fR
 | 
						|
.in +3m
 | 
						|
The lexical analyzer uses these two values for the allocation of memory needed
 | 
						|
to store a string. \fBISTRSIZE\fR is the initial number of bytes allocated.
 | 
						|
\fBRSTRSIZE\fR is the step size used for enlarging the memory needed.
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
\fBNUMSIZE\fR
 | 
						|
.in +3m
 | 
						|
The maximum length of a numeric constant recognized by the lexical analyzer.
 | 
						|
It is an error if this length is exceeded.
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
\fBERROUT\fR, \fBMAXERR_LINE\fR
 | 
						|
.in +3m
 | 
						|
Used for error messages. \fBERROUT\fR defines the file on which the
 | 
						|
messages are written. \fBMAXERR_LINE\fR is the maximum number of error
 | 
						|
messages given per line.
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
\fBSZ_CHAR\fR, \fBAL_CHAR\fR, etc
 | 
						|
.in +3m
 | 
						|
The default values of the target machine sizes and alignments. The values
 | 
						|
can be overruled with the \-V option.
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
\fBMAXSIZE\fR
 | 
						|
.in +3m
 | 
						|
This value must be set to the maximum of the values of the target machine
 | 
						|
sizes. This parameter is used in overflow detection (see also section 3.2).
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
\fBDENSITY\fR
 | 
						|
.in +3m
 | 
						|
This parameter is used to decide what EM instruction has to be generated
 | 
						|
for a case-statement. If the range of the index value is sparse, i.e.
 | 
						|
.br
 | 
						|
.ti +5m
 | 
						|
(upperbound - lowerbound) / number_of_cases
 | 
						|
.br
 | 
						|
is more than some threshold (\fBDENSITY\fR) the \fBcsb\fR instruction is
 | 
						|
chosen. If the range is dense a jump table is generated (\fBcsa\fR). This
 | 
						|
uses more space. Reasonable values are 2, 3 or 4.
 | 
						|
.br
 | 
						|
Higher values might also be reasonable on machines, which have lots of
 | 
						|
address space and memory (see also section 3.3.3).
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
\fBINP_READ_IN_ONE\fR
 | 
						|
.in +3m
 | 
						|
Used by the generic input module. It can either be defined or not defined.
 | 
						|
Defining it has the effect that files will be read completely into memory
 | 
						|
using only one read-system call. This should be used only on machines with
 | 
						|
lots of memory.
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
.bp
 | 
						|
\fBDEBUG\fR
 | 
						|
.in +3m
 | 
						|
.nf
 | 
						|
If this parameter is defined some built-in compiler-debugging tools can be used:
 | 
						|
.in +2m
 | 
						|
\(bu only lexical analyzing is done, if the \-l option is given.
 | 
						|
\(bu if the \-I option is turned on, the allocated number of structures is printed.
 | 
						|
\(bu the routine debug can be used to print miscellaneous information.
 | 
						|
\(bu the routine PrNode prints a tree of nodes.
 | 
						|
\(bu the routine DumpType prints information about a type structure.
 | 
						|
\(bu the macro DO_DEBUG(x,y) defined as ((x) && (y)) can be used to perform
 | 
						|
  several actions.
 | 
						|
.in -2m
 | 
						|
.in -3m
 | 
						|
.sp
 | 
						|
.NH 2
 | 
						|
Run time options
 | 
						|
.LP
 | 
						|
.sp
 | 
						|
The run time options can be given in the command line when the compiler is
 | 
						|
called.
 | 
						|
.br
 | 
						|
They all have the form: \-<character>
 | 
						|
.br
 | 
						|
Depending on the option, a character string has to be specified. The following
 | 
						|
options are currently available:
 | 
						|
.sp
 | 
						|
.IP \-\fBC\fR 18
 | 
						|
The lower case and upper case letters are treated different (\fBISO 6.1.1\fR).
 | 
						|
.sp
 | 
						|
.IP \-\fBu\fR
 | 
						|
The character '_' is treated like a letter, so it is allowed to use the
 | 
						|
underscore in identifiers.
 | 
						|
.br
 | 
						|
Note: identifiers starting with an underscore may cause problems, because
 | 
						|
.br
 | 
						|
\h'\w'Note: 'u'most identifiers in library routines start with an underscore.
 | 
						|
.sp
 | 
						|
.IP \-\fBn\fR
 | 
						|
This option suppresses the generation of register messages.
 | 
						|
.sp
 | 
						|
.IP \-\fBr\fR
 | 
						|
With this option rangechecks are generated where necessary.
 | 
						|
.sp
 | 
						|
.IP \-\fBL\fR
 | 
						|
Do not generate EM \fBlin\fR and \fBfil\fR instructions. These instructions
 | 
						|
are used only for profiling.
 | 
						|
.sp
 | 
						|
.IP \-\fBM\fR<number>
 | 
						|
Set the number of characters that are significant in an identifier to <number>.
 | 
						|
The maximum significant identifier length depends on the constant IDFSIZE,
 | 
						|
defined in \fIidfsize.h\fR.
 | 
						|
.sp
 | 
						|
.IP \-\fBi\fR<number>
 | 
						|
With this flag the setsize for a set of integers can be changed. The number must
 | 
						|
be the number of bits per set. Default value : (#bits in a word) \- 1
 | 
						|
.sp
 | 
						|
.IP \-\fBw\fR
 | 
						|
Suppress warning messages (see also section 2.5).
 | 
						|
.sp
 | 
						|
.IP \-\fBV\fR[[\fBw\fR|\fBi\fR|\fBf\fR|\fBp\fR|\fBS\fR][\fIsize\fR]?[\fI.alignment\fR]?]*
 | 
						|
.br
 | 
						|
Option to set the object sizes and alignments on the target machine
 | 
						|
dynamically. The objects that can be manipulated are:
 | 
						|
.br
 | 
						|
\fBw\fR\h'\w'ifpS'u'   word
 | 
						|
.br
 | 
						|
\fBi\fR\h'\w'wfpS'u'   integer
 | 
						|
.br
 | 
						|
\fBf\fR\h'\w'wipS'u'   float
 | 
						|
.br
 | 
						|
\fBp\fR\h'\w'wifS'u'   pointer
 | 
						|
.br
 | 
						|
\fBS\fR\h'\w'wifp'u'   structure
 | 
						|
.br
 | 
						|
In case of a structure, \fIsize\fR is discarded and the \fIalignment\fR is
 | 
						|
the initial alignment of the structure. The effective alignment is the least
 | 
						|
common multiple of \fIalignment\fR and the alignment of its members. This
 | 
						|
option has been implemented so that the compiler can be used as cross
 | 
						|
compiler.
 | 
						|
.bp
 |