Programmiersprache Pascal

Compiler-Optionen

An Hand einiger Programmiersysteme soll gezeigt werden, welche Möglichkeit es zur Steuerung der Arbeit von Präprozessor, Compiler und Verbinder (Linker) gibt.


Turbo Pascal 7.0

Aufruf des Compilers TPC

Turbo Pascal  Version 7.0  Copyright (c) 1983,92 Borland International
Syntax: TPC [options] filename [options]
  -B = Build all units                -L = Link buffer on disk
  -D<syms> = Define conditionals      -M = Make modified units
  -E<path> = EXE/TPU directories      -O<path> = Object directories
  -F<seg>:<ofs> = Find error          -Q = Quiet compile
  -GD = Detailed map file             -T<path> = TPL/CFG directory
  -GP = Map file with publics         -U<path> = Unit directories
  -GS = Map file with segments        -V = Debug information in EXE
  -I<path> = Include directories      -$<dir> = Compiler directive
Compiler switches: -$<letter><state>  (defaults are shown below)
  A+ Word alignment       I+ I/O error checking   R- Range checking
  B- Full boolean eval    L+ Local debug symbols  S+ Stack checking
  D+ Debug information    N- 80x87 instructions   T- Typed pointers
  E+ 80x87 emulation      O- Overlays allowed     V+ Strict var-strings
  F- Force FAR calls      P- Open string params   X+ Extended syntax
  G- 80286 instructions   Q- Overflow checking
Memory sizes: -$M<stack>,<heapmin>,<heapmax>  (default: 16384,0,655360)

Borland Delphi 1.0

Aufruf des Compilers DCC

Delphi Compiler  Version 8.0  Copyright (c) 1983,95 Borland International
Syntax: DCC [options] filename [options]   Target: Windows
  -B = Build all units                -M = Make modified units
  -D<syms> = Define conditionals      -O<path> = Object directories
  -E<path> = EXE/DCU directories      -Q = Quiet compile
  -F<seg>:<ofs> = Find error          -R<path> = Resource directories
  -GD = Detailed map file             -T<path> = DSL/CFG directory
  -GP = Map file with publics         -U<path> = Unit directories
  -GS = Map file with segments        -V = Debug information in EXE
  -I<path> = Include directories      -$<dir> = Compiler directive
  -L = Link buffer on disk
Compiler switches: -$<letter><state>  (defaults are shown below)
  A+ Word alignment       L+ Local debug symbols  T- Typed pointers
  B- Full boolean eval    M- Runtime type info    U+ Pentium safe FDIV
  D+ Debug information    N+ 80x87 instructions   V+ Strict var-strings
  E+ 80x87 emulation      O- Overlays allowed     W- Windows stack frames
  F- Force FAR calls      P+ Open string params   X+ Extended syntax
  G+ 80286 instructions   Q- Overflow checking    Y+ Symbol reference info
  I+ I/O error checking   R- Range checking       Z- Word-sized enums
  K+ Smart callbacks      S+ Stack checking
Memory sizes: -$M<stack>,<localheap>  (default: 16384,8192)

Borland Delphi 2.0

Aufruf des Compilers DCC32

Delphi for Win32  Version 9.0  Copyright (c) 1983,96 Borland International

Syntax: DCC32 [options] filename [options]

  -A<unit>=<alias> = Set unit alias  -J = Generate .obj file
  -B = Build all units               -K<addr> = Set image base addr
  -CC = Console target               -M = Make modified units
  -CG = GUI target                   -O<paths> = Object directories
  -D<syms> = Define conditionals     -P = look for 8.3 file names also
  -E<path> = EXE output directory    -Q = Quiet compile
  -F<offset> = Find error            -R<paths> = Resource directories
  -GD = Detailed map file            -U<paths> = Unit directories
  -GP = Map file with publics        -V = Debug information in EXE
  -GS = Map file with segments       -W = Output warning messages
  -H = Output hint messages          -$<dir> = Compiler directive
  -I<paths> = Include directories
Compiler switches: -$<letter><state> (defaults are shown below)
  A+  Aligned record fields           Q-  Integer overflow checking
  B-  Full boolean Evaluation         R-  Range checking
  D+  Debug information               T-  Typed @ operator
  H+  Use long strings by default     U-  Pentium(tm)-safe divide
  I+  I/O checking                    V+  Strict var-strings
  J+  Writeable structured consts     W-  Generate stack frames
  L+  Local debug symbols             X+  Extended syntax
  M-  Runtime type info               Y-  Symbol reference info
  O+  Optimization                    Z1  Minimum size of enum types
  P+  Open string params
Stack size: -$M<minStackSize[,maxStackSize]> (default 16384,1048576)

Pascal++

Compiler ppl

Pascal++ System Version 1.12
Copyright (c) 1989-1994 FAVOR Software/Flemming Andersen & Anders V. Olsen.
All rights reserved

Command syntax :
<Pascal++ command>       ::= PPL <argument>+
<argument>               ::= /<option> | <input file>
<option>                 ::= <any-available-option> | <show-available-options>
<show-available-options> ::= ?

XL Pascal

Compiler xlp

 IBM AIX XL Pascal Compiler/6000

 Usage:
    xlp [ option | inputfile ]...

 Description:
    The xlp command compiles XL Pascal source files. It also processes
    assembler source files and object files. Unless the -c option is
    specified, xlp calls the linkage editor to produce a single object
    file. Input files may be any of the following:
     -  file name with  .pas suffix: Pascal source file
     -  file name with  .s   suffix: assembler source file
     -  file name with  .o   suffix: object file

 Options:
    Options can be flag options or keyword options:

       1. Flag options:

          -c        Requests that object files not be sent to the
                    link editor.
          -F<x>[:<stanza>]
                    Specifies an alternate configuration file name
                    as <x> and an optional stanza name as <stanza>.
                    If the stanza name is not specified, xlp is used.
          -g        Produces information for the debugger.
          -I<dir>   Specifies the search path for include files.
          -o<name>  Specifies the name of the object file as <name>.
          -O        Requests code optimization during compilation.
          -O2       Same as -O
          -O3       Perform the -O level optimization and additional
                    optimizations that are memory or compile time
                    intensive.
          -p        Sets up the object file for profiling.
          -pg       Includes BSD profiling support code.
          -S        Generates an assembler file (.s) for each source
                    file, as opposed to the executable file that is
                    generated when this option is not specified. The
                    resulting .s files can be assembled to produce
                    object files (.o) or an executable file (a.out).
          -U        Preserves upper case and lower case letters in
                    Pascal source code.
          -v        Displays language processing commands as they
                    are invoked by xlp.
          -y<x>     Specifies how floating point expressions are
                    rounded when they are evaluated during
                    compilation. The rounding method is specified
                    as <x>, which may be any one of the following:
                        d     Do not round
                        m     Round toward minus infinity
                        p     Round toward plus infinity
                        n     Round to nearest
                        z     Round toward zero
          -#        Displays language processing commands but does
                    not invoke them.

          Flag options must appear exactly as shown here.

       2. Keyword options:

          Keyword options are specified in one of the following ways:

          -q<option>
          -q<option>=<parameter>
          -q<option>=<parameter>:<parameter>

          where <option> is an option name and <parameter> is a
          parameter value.
          Keyword options with no parameters represent switches
          that may be either on or off. The keyword by itself turns
          the switch on, and the keyword preceded by the letters NO
          turns the switch off. For example, -qLIST tells the
          compiler to produce a listing and -qNOLIST tells the
          compiler not to produce a listing. If an option that
          represents a switch is set more than once, the compiler
          uses the last setting.

          Keyword option and parameter names may appear in either
          UPPER CASE or lower case letters in the xlp command.
          Some of the names may be abbreviated. These descriptions
          show some of the letters in upper case and some in lower
          case. The letters shown in upper case must appear when the
          name appears in an xlp command. The letters shown in lower
          case may appear or they may be omitted.

          For example, the option shown as "SPILLsize=n" may appear
          in the xlp command in any of these ways:

              SPILL=n    spill=n     SPILLSIZE=n     spillsize=n



 OPTIONS AFFECTING THE OBJECT CODE:

 ARCH
     The ARCH option specifies the architecture on which the
     executable program will be run. You can specify the
     architecture using the following values:

         COM        Produces an object that contains instructions
                    that run on all the POWER, POWER2 and PowerPC
                    hardware platforms.
         PPC        Produces an object that contains instructions
                    that run on any of the 32-bit PowerPC hardware
                    platforms.
         PWR        Produces an object that contains instructions
                    that run on any of the POWER hardware platforms.
         PWR2       Produces an object that contains instructions
                    that run on the POWER2 hardware platforms.
         PWRX       Same as PWR2.

 CHECK
     CHECK generates trap code to check for error conditions
     while the program is running. CHECK also enables %CHECK
     directives to control whether the compiler generates trap
     code for specific conditions. NOCHECK leaves out the trap
     code and also causes the compiler to ignore %CHECK
     directives. The default is CHECK.

 COMPACT
     COMPACT reduces optimizations that increase code size.
     The default is NOCOMPACT.

 DBCS
     DBCS allows the compiler to accept double byte characters
     in literals and comments. NODBCS does not allow the compiler
     to accept double byte characters. The default is NODBCS.

 DBG
     DBG puts information that the symbolic debugger needs into the
     object code. The debugger can access variables and routines
     by name when object code is compiled with option DBG.
     NODBG does not put debugger information into the object code.
     The default is NODBG. The -g flag is equivalent to DBG.

 DDNAME
     DDNAME controls how the compiler generates DDNAMEs for files.
     DDNAME has one parameter, which may be one of the following:

         UNIQUE     Generate distinct DDNAMEs for all files.
                    DDNAME=UNIQUE is the default for LANGLVL=STANDARD.
         COMPAT     Generate DDNAMEs that are compatible with DDNAMEs
                    generated by VS Pascal. DDNAME=COMPAT is the default
                    for LANGLVL=VS.

 EXTCHK
     EXTCHK puts information into the object code that lets the
     linkage editor check for conflicts between the declarations
     of external identifiers in different programs and segments.
     NOEXTCHK leaves that information out of the object code.
     The default is EXTCHK.

 FLOAT
     FLOAT specifies various floating-point suboptions. Suboptions
     include:

         HSFLT      Never round single-precision expressions,
                    and do not perform range checking for floating-
                    point to integer conversions.
         HSSNGL     Round single-precision expressions only when the
                    results are stored in real memory locations.
         NANS       Detect conversion of single-precision NaNS to
                    double precision.
         NOFOLD     Suppress compile-time evaluation of constant
                    floating-point evaluation.
         NOMAF      Suppress generation of multiply-add instructions.
         RNDSNGL    Ensure strict adherence to IEEE standard.  That is,
                    all operations on single-precision values produce
                    results that remain in single precision.
         RRM        Specify run-time rounding mode.  Compile with this
                    option if the run-time rounding mode is round toward
                    minus infinity, round toward positive infinity, or
                    not known.
         RSQRT      Change a division by the result of a square root
                    operation into a multiply by the reciprocalof the
                    square root.
         SPNANS     Detect conversion of single-precision NaNS to double
                    precision.

 FLTTRAP
     FLTTRAP option specifies enhanced detection of floating-point
     exceptions. Suboptions allow the specification of specific
     floating-point exception types to detect, the automatic enabling
     of exceptions, and imprecise detection of exceptions.  Suboptions
     include:

         OVerflow   Detect floating-point overflow
         UNDerflow  Detect floating-point underflow
         ZEROdivide Detect floating-point division by zero
         INValid    Detect floating-point invalid operation
         INEXact    Detect floating-point inexact
         ENable     Enable the specified exceptions
         IMPrecise  Imprecise exception detection

 FOLD
     FOLD evaluates floating point expressions with constant operands
     during compilation. NOFOLD generates code to evaluate all
     floating point operations even if the operands are constants.
     The default is FOLD.

 FPRET
     FPRET controls how code is generated to process floating point
     values returned by functions. FPRET has one parameter, which
     specifies where functions place floating point return values
     and also where function calls expect to find floating point
     return values. The parameter may be one of the following:

         STD        FPRET=STD generates code that puts floating point
                    return values of functions both in general registers
                    and in floating point registers. In addition, it
                    generates code for function calls that expects to
                    find floating point return values both in general
                    registers and in floating point registers (default).
         RETURN     FPRET=RETURN generates code that puts floating point
                    return values of functions both in general registers
                    and in floating point registers. In addition, generates
                    code for function calls that expects to find floating
                    point return values only in floating point registers.
         FAST       FPRET=FAST generates code that puts floating point
                    return values of functions only in floating point
                    registers. In addition, generates code for function
                    calls that expects to find floating point return
                    values only in floating point registers.

 IEEE
     The IEEE option controls how floating point arithmetic is
     done during compilation. The IEEE option may have either one
     or two parameters. The first parameter specifies the direction
     of rounding. The second parameter specifies whether strict
     compliance with IEEE rules must be followed when calculating
     intermediate results within expressions.
     The first parameter may have the following values:

         Nearest    Round towards Nearest (default).
         Plus       Round to Plus infinity.
         Minus      Round towards Minus infinity.
         Zero       Round towards Zero.

     The second parameter specifies Strict compliance with IEEE
     floating point arithmetic rules and causes all intermediate
     results to be rounded to single precision. The second parameter
     may have the following values:

         Comply     Intermediate results must be rounded to single
                    precision, which is the same as Pascal SHORTREAL.
         Nocomply   Intermediate results may be double precision,
                    which is the same as Pascal REAL.

 LANGLVL
     LANGLVL controls which version of the Pascal language the
     compiler processes. LANGLVL has one parameter, which specifies
     the version of Pascal:

         VS         IBM VS Pascal (default).
         STANDard   The 1983 ANSI and IEEE Standard Pascal.

 LOG
     LOG prepares a log of floating point exceptions that happen
     during compilation. NOLOG deletes the floating point exception
     log. The default is NOLOG.

 MAF
     MAF allows the compiler to generate combined multiply and add
     floating point operations. NOMAF makes the compiler generate
     separate multiply operations and add operations. The default
     is MAF.

 MAXMEM=<n>
     Limit the amount of memory used by space intensive optimizations
     to <n> kilobytes, where <n> is a positive integer. Specifying
     NOMAXMEM may be used to indicate unlimited memory usage. The
     default is MAXMEM=2048.

 MBCS
     MBCS allows the compiler to accept multi byte characters
     in literals and comments. NOMBCS does not allow the compiler
     to accept multi byte characters.  The default is NOMBCS.

 MIXED
     MIXED keeps identifiers in mixed upper case and lower case
     letters exactly as they appear in source code. MIXED treats
     identifiers that are the same except for differences between
     upper and lower case letters as different identifiers.
     NOMIXED converts all letters in identifiers to lower case.
     The default is NOMIXED.

 OPT=<n>
     OPT has one parameter, which sets the level of compiler
     optimization. The parameter <n> must be either 0, 2 or 3.
     The -O flag is equivalent to OPT=2. The default is OPT=0.

 RRM
     RRM will prevent the compiler from doing certain floating
     point optimizations with combinations of multiply and
     subtraction operations. It should be used when the
     Run-time Rounding Mode is unknown or will be round toward
     plus or minus infinity.

 SPILLsize=<n>
     SPILLsize has one parameter, <n>, which sets the size of the
     register spill area allocated for each routine call while
     the program is running. The default is SPILL=512.

 STRICT
     STRICT ensures that optimizations done by the -O3 option
     do not alter the semantics of a program. The default is
     NOSTRICT with -O3.

 TRACEID
     TRACEID includes routine names in traceback tables so the TRACE
     procedure can display routine names. NOTRACEID removes routine
     names from traceback tables. With NOTRACEID the display produced
     by the TRACE procedure does not contain routine names.
     The default is TRACEID.

 TUNE
     The TUNE option specifies the architecture on which the
     executable program is optimized. You can specify the
     architecture using the following values:

         PPC601     Produces an object optimized for all the
                    PowerPC601 processors.
         PWR        Produces an object optimized for the POWER
                    hardware platforms.
         PWR2       Produces an object optimized for the POWER2
                    hardware platforms.
         PWRX       Same as PWR2.



 PRIME FILE HANDLING:

 PRIME=fn
     PRIME specifies that the compiler dictionary is initialized with
     declarations from a prime file. PRIME has one parameter, which
     specifies the name of the prime file. NOPRIME specifies that the
     compiler dictionary is not initialized from a prime file.
     The default is PRIME=xlp_prime.

 PRIMEOUT=fn
     PRIMEOUT specifies that the compiler creates a prime file from
     the compiled declarations. PRIMEOUT has one parameter, which
     specifies the name of the prime file to be created.



 OPTIONS DESCRIBING COMPILER OUTPUT:

 MARgins=<left>:<right>
     MARGINS specifies that only columns <left> through <right>
     in the source code file are processed by the compiler.
     The default is MARGINS=1:256.



 LISTING AND DISPLAY OPTIONS:

 ATTRibutes
     ATTRibutes includes the attributes of all identifiers that are
     used by the program in the listing file. ATTR=FULL includes
     the attributes of all identifiers that appear in the program,
     whether they are used or not. NOATTR specifies that attributes
     of identifiers do not appear in the listing.
     The default is NOATTR.

 FLAG=<n>
 FLAG=<n>:<m>
     FLAG=<n> with one parameter specifies that no diagnostic
     messages whose severity is less than <n> are included in the
     listing file. FLAG=<n>:<m> with two parameters specifies that
     no diagnostic messages whose severity is less than <m> are
     displayed on the standard output.
     The severity parameters <n> and <m> may be any of the following,
     starting from the least severe:

         Q          All messages
         I          Information messages
         W          Warning messages
         E          Error messages
         S          Severe error messages
         U          Unrecoverable compiler error messages.

 HALT=<n>
     HALT=<n> specifies that the compiler stops compilation after
     any phase in which a diagnostic message of severity <n> or
     higher is issued. The severity parameter <s> may be any of
     the following, starting from the least severe:

         I          Information messages
         W          Warning messages
         E          Error messages
         S          Severe Error messages

 LIST
     LIST produces an assembly listing of the object code. LIST
     also enables %LIST directives to control assembly listing of
     separate routines. NOLIST specifies that no assembly listing
     is included in the listing. The default is NOLIST.

 OPTIONs
     OPTION puts a list of all of the options that are in effect
     into the listing. NOOPTIONS specifies that no options are put
     into the listing. The default is NOOPTIONs.

 QUIET
     QUIET specifies that the compiler does not display any
     information besides diagnostic messages to the standard
     output. NOQUIET specifies that the compiler displays timing
     information for each phase of the compiler to the standard
     output. The default is QUIET.

 SOURCE
     SOURCE includes the source code in the listing file.
     NOSOURCE leaves source code out of the listing file.
     The default is NOSOURCE.

 WRITE
     WRITE enables %WRITE directives to display output on the
     standard output. NOWRITE specifies that %WRITE directives
     do not display any output. The default is NOWRITE.

 XREF
     XREF includes cross reference information about identifiers
     that are used by the program in the listing file.
     XREF=FULL includes cross reference information about all
     identifiers that appear in the program, whether they are
     used or not. NOXREF specifies that cross reference information
     does not appear in the listing.
     The default is NOXREF.



 MISCELLANEOUS OPTIONS:

 WAIT=<n>
     WAIT specifies the maximum wait time in seconds for a network
     license token. NOWAIT specifies indefinite wait time. The default
     is NOWAIT.



 COMPILER RETURN VALUE:

 The compiler's return value gives the severity of the most severe
 diagnostic message that was issued:

         0          There were no diagnostic messages.
         1          There is a minor error in the program.
         2          The compiler detected an error that will cause a
                    trap if the program runs.
         3          There is a severe error in the program, and the
                    compiler did not generate object code.
         4 to 8     There was an error in the compiler itself, such as
                    an internal table overflow. The compiler did not
                    generate object code.

Pascal-XSC

Compiler pxsc

Compiler options are:                                    default:
+v     verbose, Compiler reports, what he is doing         
                No 'Compiling ...', but path & module info 
-v              Compiler is quiet                          
+l     listing, direct messages to file *.lst              -l
-l              display messages on terminal               -l
+w     warning, report warnings                            +w
-w              suppress warnings                          +w
+m     merge,   merge source text into code                -m
-m              no source text in code                     -m
+a     abort,   abort compilation in case of error         -a
-a              continue compilation in case of error      -a
+f     fastfor, for-loops for vector processors            -f
-f              standard conform for-loops                 -f
+c     code,    code generation in any case                
                code generation only if error free         
-c              no code generation                         
+x     index,   generate index checks                      +x
-x              no index checks                            +x
+n     number,  generate line numbers into code            +n
-n              no line numbers in code                    +n
+d     dump,    internal dump, for debugging only          -d
-d              no dump                                    -d
+t     terminal,write code to stdout                       -t
-t              write code to file                         -t
+r     rename,  rename Pascal identifiers                  +r
-r              preserve Pascal identifiers                +r
+s     srcdir,  output to directory of source file         -s
-s              output to current directory (working dir)  -s


P. Böhme, 21.08.1996