Subsections

- About this document

## List of Tables

- . Formats generated by the x86 compiler
- . Predefined macros
- . Intel 80x86 Register table
- . Motorola 680x0 Register table
- . Calling mechanisms in Free Pascal
- . Stack frame when calling a nested procedure (32-bit processors)
- . Stack frame when calling a procedure (32-bit model)
- . Maximum parameter sizes for processors
- . Enumeration storage for `tp` mode
- . Processor mapping of real type
- . AnsiString memory structure (32-bit model)
- . Object memory layout (32-bit model)
- . Object Virtual Method Table memory layout (32-bit model)
- . Class memory layout (32-bit model)
- . Class Virtual Method Table memory layout (32-bit model)
- . Data alignment
- . Heap error result
- . ReturnNilIfGrowHeapFails value
- . Shared library support
- . PPU Header
- . PPU CPU Field values
- . PPU Header Flag values
- . chunk data format
- . Possible PPU Entry types
- . Possible defines when compiling FPC
- . Possible defines when compiling using FPC
- . Possible CPU defines when compiling using FPC
- . Possible defines when compiling using target OS
- . Operating system specific behavior

# About this document

This is the programmer's manual for Free Pascal.

It describes some of the peculiarities of the Free Pascal compiler, and provides a glimpse of how the compiler generates its code, and how you can change the generated code. It will not, however, provide a detailed account of the inner workings of the compiler, nor will it describe how to use the compiler (described in the Users' guide). It also will not describe the inner workings of the Run-Time Library (RTL). The best way to learn about the way the RTL is implemented is from the sources themselves.

The things described here are useful when things need to be done that require greater flexibility than the standard Pascal language constructs (described in the Reference guide).

Since the compiler is continuously under development, this document may get out of date. Wherever possible, the information in this manual will be updated. If you find something which isn't correct, or you think something is missing, feel free to contact me.