1.2.51 $MAXFPUREGISTERS : Maximum number of FPU registers for variables

The {$MAXFPUREGISTERS XXX} directive tells the compiler how many floating point variables can be kept in the floating point processor registers on an Intel X86 processor. This switch is ignored unless the -Or (use register variables) optimization is used.

This is quite tricky because the Intel FPU stack is limited to 8 entries. The compiler uses a heuristic algorithm to determine how many variables should be put onto the stack: in leaf procedures it is limited to 3 and in non leaf procedures to 1. But in case of a deep call tree or, even worse, a recursive procedure, this can still lead to a FPU stack overflow, so the user can tell the compiler how many (floating point) variables should be kept in registers.

The directive accepts the following arguments:

N
where N is the maximum number of FPU registers to use. Currently this can be in the range 0 to 7.
Normal
Restores the heuristic and standard behavior.
Default
Restores the heuristic and standard behavior.

RemarkThis directive is valid until the end of the current procedure.