Next:
About this document
Up:
Free Pascal programmers guide
Previous:
Free Pascal programmers guide
Contents
Compiler directives
Local directives
$A
or
$ALIGN
: Align Data
$ASMMODE
: Assembler mode
$B
or
$BOOLEVAL
: Complete boolean evaluation
$C
or
$ASSERTIONS
: Assertion support
$DEFINE
: Define a symbol
$ELSE
: Switch conditional compilation
$ENDIF
: End conditional compilation
$ERROR
: Generate error message
$F
: Far or near functions
$FATAL
: Generate fatal error message
$H
or
$LONGSTRINGS
: Use AnsiStrings
$HINT
: Generate hint message
$HINTS
: Emit hints
$IF
: Start conditional compilation
$IFDEF
: Start conditional compilation
$IFNDEF
: Start conditional compilation
$IFOPT
: Start conditional compilation
$INFO
: Generate info message
$I
or
$IOCHECK
: Input/Output checking
$I
or
$INCLUDE
: Include file
$I
or
$INCLUDE
: Include compiler info
$I386_XXX
: Specify assembler format
$L
or
$LINK
: Link object file
$LINKLIB
: Link to a library
$M
or
$TYPEINFO
: Generate type info
$MESSAGE
: Generate info message
$MMX
: Intel MMX support
$NOTE
: Generate note message
$NOTES
: Emit notes
$OUTPUT_FORMAT
: Specify the output format
$P
or
$OPENSTRINGS
: Use open strings
$PACKENUM
: Minimum enumeration type size
$PACKRECORDS
: Alignment of record elements
$Q
$OVERFLOWCHECKS
: Overflow checking
$R
or
$RANGECHECKS
: Range checking
$SATURATION
: Saturation operations
$STOP
: Generate fatal error message
$T
or
$TYPEDADDRESS
: Typed address operator (@)
$UNDEF
: Undefine a symbol
$V
or
$VARSTRINGCHECKS
: Var-string checking
$WAIT
: Wait for enter key press
$WARNING
: Generate warning message
$WARNINGS
: Emit warnings
$X
or
$EXTENDEDSYNTAX
: Extended syntax
Global directives
$D
or
$DEBUGINFO
: Debugging symbols
$E
: Emulation of coprocessor
Intel x86 version
Motorola 680x0 version
$G
: Generate 80286 code
$L
or
$LOCALSYMBOLS
: Local symbol information
$M
or
$MEMORY
: Memory sizes
$N
: Numeric processing
$O
: Overlay code generation
$S
: Stack checking
$W
or
$STACKFRAMES
: Generate stackframes
$Y
or
$REFERENCEINFO
: Insert Browser information
Using conditionals, Messages and macros
Conditionals
Messages
Macros
Using Assembly language
Intel syntax
AT&T Syntax
Calling mechanism
Ix86 calling conventions
M680x0 calling conventions
Signalling changed registers
Register Conventions
Intel x86 version
Motorola 680x0 version
Linking issues
Using external functions or procedures
Using external variables
Linking to an object file
Linking to a library
Making libraries
Exporting functions
Exporting variables
Compiling libraries
Moving units into a library
Unit searching strategy
Using smart linking
Objects
Constructor and Destructor calls
Memory storage of objects
The Virtual Method Table
Generated code
Units
Programs
Intel MMX support
What is it about ?
Saturation support
Restrictions of MMX support
Supported MMX operations
Optimizing MMX support
Memory issues
The 32-bit model.
The stack
Intel x86 version
DOS
Linux
OS/2
Motorola 680x0 version
Amiga
Atari
The heap
The heap grows
Using Blocks
Using the split heap
using DOS memory under the Go32 extender
Optimizations
Non processor specific
Constant folding
Constant merging
Short cut evaluation
Constant set inlining
Small sets
Range checking
Shifts instead of multiply or divide
Automatic alignment
Smart linking
Inline routines
Case optimization
Stack frame omission
Register variables
Intel x86 specific
Motorola 680x0 specific
Optimization switches
Tips to get faster code
Floating point
Intel x86 specific
Motorola 680x0 specific
Anatomy of a unit file
Basics
reading ppufiles
The Header
The sections
Creating ppufiles
Compiler and RTL source tree structure
The compiler source tree
Compiler limits
About this document ...
Michael Van Canneyt
Thu Sep 10 14:04:11 CEST 1998