Compiler Switches And Directives
Turbo Pascal Compiler for 8051 microcontrollers
Compiler switches: {$(letter/switchname)(state)[, (letter/switchname)(state)] } (defaults are shown below)
| Compiler switch | Description |
|---|---|
| A- AbsoluteInstructions Off |
Generate absolute instructions (ACALL/AJMP) |
| B- | Full boolean evaluation |
| C+ | Show source lines in assembler file |
| DefaultFile Off | Assume CurrentIO system file variable is assigned with the actual IO procedures |
| I+ | IDATA variables can start below $80 (as indirectly addressed DATA variables) |
| InlineCode On | If set to Off compiler generates normal call to inline procedure |
| NoReturn | Inside assembler procedure prevents generation of RET instruction |
| O+ | Optimizations |
| P- | Open string parameters |
| R- | Reentrant procedures |
| T- | Typed pointers |
| U- | Unique local variable names |
| V+ | Strict var-strings |
| X+ | Extended syntax |
Note: there is no space between switch letter and + or - and there is space between long switch name and On or Off.
Compiler directives: {$ (directive) (value) }
| Compiler directive | Description |
|---|---|
| DEFINE [symbol] | Defines symbol |
| ELSE | Conditional compilation with IFDEF and IFNDEF |
| ENDIF | End conditional compilation |
| IFDEF [symbol] | Conditional compilation if symbol is defined |
| IFNDEF [symbol] | Conditional compilation if symbol is not defined |
| IFOPT [switch+/ -] | Conditional compilation if compiler switch is set/not set |
| M [CODE Start], [CODE Size], [XDATA Start], [XDATA Size], [Heap Size] |
Memory sizes (only in program), default values: $0000 $10000 $0000 $0000 $0000 |
| IDATA | IDATA memory available |
| XDATA | XDATA memory available (only in unit) |
| HEAP | Heap available (only in unit) |
| MG [memory type] | Set default memory type for global variables (memory type = DATA, IDATA or XDATA) |
| ML [memory type] | Set default memory type for local variables (memory type = DATA, IDATA or XDATA) |
| MP [memory type] | Set default mem. type for parameter variables (memory type = DATA, IDATA or XDATA) |
| MT [memory type] | Set default mem. type for temporary variables (memory type = DATA, IDATA or XDATA) |
