TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

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

             В Borland Pascal вы можете работать с двумя типами  чисел  -
        целыми (короткими целыми - Shortint,  целыми - Integer,  длинными
        целыми - Longint,  целыми длиной в байт - Byte,  целыми длиной  в
        слово - Word) и вещественными (вещественными - Real, вещественны-
        ми одинарной точности - Single,  вещественными двойной точности -
        Double, повышенной точности - Extended, сложными - Comp). Вещест-
        венные числа называют также числами с плавающей точкой (плавающей
        запятой). Для облегчения работы с целыми числами создан процессор
        8086,  но для работы с вещественными числами на  этом  процессоре
        затрачивается гораздо больше времени и усилий. Для семейства про-
        цессоров 8086 предназначено соответствующее  семейство  вспомога-
        тельных  специализированных процессоров для математических вычис-
        лений (сопроцессоров) 80x87.

             Процессор 80x87 - это специальный сопроцессор для  обработки
        чисел, который может входить в состав вашего компьютера РС. С по-
        мощью него операции с плавающей точкой выполняются очень  быстро.
        Поэтому если вы собираетесь использовать большой объем вычислений
        с плавающей точкой, то вам, вероятно, понадобится сопроцессор.

             Borland Pascal построен таким образом,  что он  обеспечивает
        оптимальное  выполнение операций с плавающей точкой независимо от
        наличия сопроцессора 80x87.

             * Для программ,  работающих на компьютере РС,  независимо от
               того,  оснащен  он сопроцессором 80x87 или нет,  в Borland
               Pascal предусмотрено использование  вещественных  чисел  и
               соответствующая библиотека программ, которые предназначены
               для выполнения операций с плавающей точкой.  Числа вещест-
               венного типа занимают 6 байт памяти.  При этом обеспечива-
               ется представление чисел  в  диапазоне  от  2.9х10^-39  до
               1.7х10^38 с 11-12 значащими цифрами. Программы в библиоте-
               ке программ для работы с плавающей  точкой  оптимизированы
               по  скорости  и  по  размеру  и  используют самые новейшие
               средства процессора 80x87.

             * Если вы пишете программы,  использующиеся только на компь-
               ютерах,  оснащенных сопроцессором 80x87, то вы можете ука-
               зать Borland Pascal на необходимость получения выполняемо-
               го  кода,  в  котором используется плата процессора 80x87.
               Это даст вам возможность  использования  четырех  дополни-
               тельных типов вещественных чисел (одинарной и двойной точ-
               ности,  повышенной точности,  сложного типа) и расширенный
               диапазон  представления  чисел  с  плавающей  точкой  - от
               1.9х10^-4951 до 1,1х10^4943 с 19-20 значащими цифрами.

             С помощью  директивы  компилятора  $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
        игнорируется.

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

             Когда вы запускаете прикладную программу Windows,  cкомпили-
        рованную в состоянии {$N+}, убедитесь, что она может найти в сис-
        теме файл WIN87EM.DLL.

             Когда вы выполняете компиляцию в режиме кода 80х87 (директи-
        ва {$N+}),  то возвращаемые подпрограммы модуля Systем (Sqrt, Рi,
        Sin и т.д.) значения представляют собой не вещественные числа,  а
        числа типа Extended (с повышенной точностью).

               {$N+}

               begin
                 Writeln(Pi);                 { 3.14159265358979E+0000 }
               end.

               {$N-}

               begin
                 Writeln(Pi);                 { 3.1415926536E+00 }
               end.

             В оставшейся части данной главы обсуждаются специальные воп-
        росы,  касающиеся  использования  процессора  80x87  в программах
        Borland Pascal.


Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz