1.2.49. $MAXFPUREGISTERS : Максимальное количество регистров FPU для переменных

Вверх  Предыдущий  Следующий

Директива {$MAXFPUREGISTERS XXX} указывает компилятору, сколько переменных с плавающей точкой можно хранить в регистрах плавающей точки процессора Intel X86. Этот переключатель игнорируется, если используется переключатель оптимизации -Or (использовать регистровые переменные).

Это довольно сложно, так как стек Intel FPU имеет ограничение в 8 записей. Компилятор использует эвристический алгоритм, чтобы определить, сколько переменных необходимо поместить в стек: для видимых процедур это ограничение равно 3, для невидимых – 1. Но в случае глубокого дерева вызовов или, что ещё хуже, в рекурсивных процедурах, это всё равно может привести к переполнению стека FPU, поэтому пользователь может указать компилятору, сколько (плавающая точка) переменных должно сохраняться в регистрах.

Директива допускает следующие аргументы:

N
где N это максимальное количество регистров FPU для использования. В текущий момент это число может быть в диапазоне от 0 до 7.

Normal
восстанавливает эвристическое и обычное поведение.

Default
восстанавливает эвристическое и стандартное поведение

ПРИМЕЧАНИЕ

Эта директива действительна до конца текущей процедуры.