Руководство по языку B.Pascal 7


Глава 15. Использование сопроцессора 80x87 - часть 2


С помощью директивы компилятора $N или параметра меню Options¦Cоmpiler (Параметры¦Компилятор) 80x87/80287 можно перек- лючаться между различными моделями генерации кода с плавающей точкой. По умолчанию используется состояние {$N-}. В этом состоя- нии компилятор использует 6-байтовую библиотеку с плавающей точ- кой, что позволяет вам работать только с переменными типа Real. В состоянии {$N+} компилятор генерирует код для сопроцессора 80x87, что дает вам дополнительную точность и доступ к 4 дополнительным вещественным типам.

В Windows при компиляции с режимом числовой обработки, то есть с директивой {$N+}, убедитесь, что в вашей системе можно найти библиотеку эмуляции Windows 8087 - WIN87EM.DLL. Эта библио- тека обеспечивает необходимый интерфейс между сопроцессором 80х87, Windows и вашей прикладной программой. Если сопроцессор 80х87 в вашей системе отсутствует, то библиотека WIN87EM.DLL бу- дет эмулировать его программно. Эмуляция существенно замедляет работу по сравнению с реальным сопроцессором 80х87, но обеспечи- вает выполнение вашей прикладной программы на любой машине.

В реальном или защищенном режиме DOS, даже если у вас нет сопроцессора 8087, вы можете указать Borland Pascal, что нужно включить библиотеку исполняющей системы, которая эмулирует ариф- метический сопроцессор 8087. В случае наличия сопроцессора 8087 он используется. Если сопроцессор отсутствует, его работа эмули- руется библиотекой исполняющей системы (за счет некоторой потери скорости работы программы).

Для разрешения и запрещения эмуляции сопроцессора 8087 ис- пользуются директива компилятора $E и параметр Emulation (Эмуля- ция) меню Options¦Compiler (Параметры¦Компилятор). По умолчанию используется состояние {$E+}. В этом состоянии в программу авто- матически включается полная эмуляция сопроцессора 8087. В состоя- нии {$E-} используется существенно меньшая часть библиотеки с плавающей точкой, а полученный в результате файл .EXE будет рабо- тать только на машинах с сопроцессором 8087.

В приложении Windows директива компилятора $E не действует. Не действует она также в модуле. Более того, если программа ком- пилировалась с директивой {$N-}, а все модули программы компили- ровались с директивой {$N+}, то библиотека исполняющей системы для сопроцессора 8087 не требуется, и директива компилятора $E игнорируется.




- Начало -  - Назад -  - Вперед -