ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 26

Глава 25. Совместимость с математическим сопроцессором
          387(ТМ), 80287 и 8087.
----------------------------------------------------------------
В данной главе обсуждаются проблемы, которые возникают при
переносе вычислительного программного обеспечения на процессор
i486 с более ранних систем. С точки зрения программного
обеспечения процессор i486 очень похож на системы 386(ТМ)
CPU/387(ТМ) FPU. Программное обеспечение, идущее на системе 386
CPU/387 NPX, вне зависимости от того, было ли оно написано для
этой системы или перенесено с систем 80286/80287 или 8086/8087,
будет выполняться и на процессоре i486. Для прямого перенесения
программ с систем 80286/80287 или 8086/8087 на процессор i486,
необходимо учитывать проблемы, описанные ниже. Каждый раздел
этой главы посвящен отличиям процессора i486 от каждого из его
предшественников.
25.1. Отличия от систем 386(ТМ) CPU/387(ТМ).
----------------------------------------------------------------
В этом разделе собраны те различия между процессором i486 и
системами 386 CPU/387 NPX, которые могут влиять на
численное программное обеспечение.
1. Биты регистра управления:
   Бит ET (Тип Расширения) регистра CR0 указывает на наличие в
   системе математического сопроцессора 80287 (ET = 0) или
   сопроцессора 387 DX (ET = 1). Аппаратурой процессора i486
   этот бит не используется. При перезапуске биту ET
   присваивается значение 0.
   Бит NE (Числовое Расширение) регистра CR0 используется
   процессором i486 для указания, должны ли немаскированные
   исключения с плавающей точкой передаваться как внутренние
   прерывания через вектор прерываний 16 (NE = 1) или как
   внешние прерывания (NE = 0). При перезапуске биту NE
   присваивается значение 0, следовательно программное
   обеспечение, использующее автоматический механизм сообщений
   об ошибках, должно устанавливать его равным 1.
   Для процессоров 80286 и 386 бит MP (Монитор Сопроцессора)
   регистра CR0 показывает, когда при наличии ловушки команды
   WAIT контекст FPU отличается от текущей работающей задачи.
   При MP = 1 и TS = 1 команда WAIT вызовет отказ из-за
   недоступности устройства (вектор прерываний 7). На
   микропроцессорах 80286 и 386 бит MP используется для
   поддержки комады WAIT при ожидании на устройствах, отличных
   от сопроцессора. Свой статус устройство сообщает через вывод
   BUSY#. Поскольку у процессора i486 нет такого вывода, бит MP
   не находит применения, и для нормальной работы перенесенных
   программ должен быть равен 1.
2. Инициализация и RESET.
   При перезапуске аппаратуры RESET регистры с плавающей точкой
   не изменяются до обращения к встроенной программе
   самотестирования (BIST). При обращении к BIST перезапуск
   RESET действует практически также, как команда FINIT.
   Единственное отличие состоит в том, что FINIT не изменяет
   регистры стека, а перезапуск RESET с BIST обнуляет их.
   При выполнении перезапуска RESET или команды FINIT
   математический сопроцессор 387 выдает сообщение об ошибке.
   Процессор i486 и сопроцессор 80287 этого не делают.
   Команда FINIT на процессоре i486 очищает указатели ошибок
   (данных и команд).
3. Исключения:
   На процессоре i486 неопределенный код операции ESC вызовет
   исключение неверного кода операции (вектор прерывания 6).
   Неопределенные коды операций ESC, также как и определенные,
   при установленном бите TS или EM в регистре CR0 вызывают
   исключение недоступности устройства (вектор прерывания 7).
   При обнаружении неопределенного кода операции ESC процессор
   i486 не делает проверки условий ошибки с плавающей точкой.
   Операнд невыровненных данных вызовет исключение выравнивания
   (вектор прерывания 17) на уровне 3 программного обеспечения.
   Исключение составляет операция FSAVE/FRSTOR над частью стека.
   На процессоре i486 команда WAIT может иногда выполняться как
   NOP. Это происходит в случае, когда команде WAIT предшествует
   команда, при выполнении которой осуществляется ожидание. В
   этом случае на процессоре i486 сообщение о числовом
   исключении может появиться на одну команду позже, чем на
   системе 386 CPU/387 NPX.
   На процессоре i486 при записи одной части операнда внутрь
   сегмента страницы, а другой - вне его, ошибка памяти может
   вызвать запись первой части без второй. В этом же случае
   системы 386 CPU/387 NPX ничего не запишут.
   На процессоре i486 при ошибке сегмента в середине операции
   FLDENV может случиться, что часть среды будет загружена, а
   часть - нет. В таких случаях в слове управления FPU останется
   значение 007FH.
   В процессоре i486 прерывание 9 отсутствует. В случаях, когда
   на процессоре 387 появляется прерывание 9, процессор i486
   просто прерывает выполнение команды. При этом, однако,
   необходима некоторая осторожность. Ошибки памяти (в
   особенности сбой страниц) при выполнении FLDENV или FRSTOR в
   случаях, когда операционная система осуществляет переключение
   задачи, могут вызвать потерю среды с плавающей точкой. Intel
   настоятельно рекомендует размещать область хранения с
   плавающей точкой на одной странице с TSS.
4. Трансцендентные команды:
   На процессоре i486 трансцендентные команды могут быть
   прерваны в некоторых контрольных точках во время выполнения,
   если INTR находится в состоянии ожидания. Таким образом,
   трансцендентные команды следует использовать только в среде,
   где появление INTR-ов ожидается не ранее, чем через 200
   тактов.
25.2  Отличия от систем 80286/80287.
----------------------------------------------------------------
В этом разделе собраны различия между процессором i486 и
системами 386 CPU/387 с одной стороны, и системами 80286/80287 и
8086/8087 с другой, и проанализировано влияние этих различий на
программное обеспечение, которое подлежит переносу с системы
80286/80287 на процессор i486. При любом прямом переносе с
систем 8086/8087 следует дополнительно принимать во внимание
соображения, описанные в Разделе 25.3
25.2.1	 Tипы данных и обработка исключений
----------------------------------------------------------------
ЪДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДД
ДВДДДДДДДДДДДї
і         і          Описание  различий           і  Влияние на  
 і  Причина  і
і  Выход  ГДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДґ  программное 
 і различий  і
і         і Поведение систем і Поведение систем   і  обеспечение 
 і           і
і         і i486 CPU/387 NPX і  80287/8087        і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
і  NaN    іСистемы i486 CPU/ іСистемы 80287/8087  іНеинициализи- 
 іСовмести-  і
і(не-     і387 NPX различает ігенирируют только   ірованный учас-
 імость 754  і
і  число) ісигнальные и без- іодин класс NaN(экви-іток памяти, со
-істандарта  і
і         іответные NaNы.    івалентный безответноідержащий QNaNД
ыіIEEE.      і
і         іСистемы i486      іму NaN), но вызываюті, которые дол-
 і           і
і         іCPU/387 NPX гене- іисключение неопредеДіны быть измене
-і           і
і         ірируют только без-іленной операции при іны на SNaN-ы, 
 і           і
і         іответные NaN.Когдаівозникновении любогоічтобы в систе-
 і           і
і         івстречается сиг-  ікласса NaN.         імах i486 CPU/ 
 і           і
і         інальные NaN-ы,    і                    і387 NPX возник
-і           і
і         ігенерируется искл.і                    іла ошибка при 
 і           і
і         інеопределенной    і                    іобращении к не
-і           і
і         іоперации (исключе-і                    іинициализиро- 
 і           і
і         іне для FCOM, FIST,і                    іванному участк
уі           і
і         іFBSTP, которые    і                    іпамяти.       
 і           і
і         івызывают IE для   і                    і              
 і           і
і         ібезответных NaN). і                    і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іПсевдо-  іСистемы i486 CPU/ іВ системах 80287/   іНет. Системы  
 іСовмести-  і
іноль,    і387 NPX не генериДі8087 определены и   іi486 CPU/387 D
Xімость 754  і
іПсевдо-  іруют и не поддер- іподдерживаются      іне генирируют 
 істандарта  і
іNaN,     іживают такие фор- іспециальные обработДіэти форматы, и
 іIEEE.      і
іПсевдо-  іматы; при встрече ічики для таких      іследовательно,
 і           і
ібесконеч-іс ними в арифмети-іформатов.           іони не встретя
-і           і
іность и  іческих операциях  і                    ітся если тольк
оі           і
іНенорми- івозникает исключеДі                    іпрограммист не
 і           і
іраванный іние неопределеннойі                    інамерен ввести
 і           і
іформат   іоперации.         і                    іих.           
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іБиты     іКодирование в     іКодирование для     іОбработчик    
 іСовмести-  і
іслова    іслове тега для    іпсевдо-нуля и ненор-іисключений    
 імость 754  і
ітега для інеподдерживаемых  імированного-"дейст- іможет нуждатьс
яістандарта  і
інеподдер-іформатов данных   івительный" (тип 00);ів изменении,  
 іIEEE.      і
іживаемых іупоминается в     ідругие-"специальные іесли програм- 
 і           і
іформатов іРазделе 25.2.2    іданные" (тип 10).   імист используе
ті           і
іданных   і"специальные      і                    ітакие типы    
 і           і
і         іданные" (тип 10). і                    іданных.       
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іИсключе- іИсключение неопре-іВозникает исключениеіНет. Програм- 
 іУлучшение, і
іние неоп-іделенной операции інеопределенной опе- імное обеспе-  
 ів результа-і
іределен- іне возникает, ког-ірации, когда встре- ічение систем  
 іте которогоі
іной опе- іда встречается    ічаются денормали-   іi486 CPU/387  
 іне возника-і
ірации    іденормализованное ізованное число в    іNPX будет про-
 іет исключе-і
і         ічисло в FSORT,FDIVіFSQRT, FDIV или     ідолжать выпол-
 іние.       і
і         іили FPREM или при іFPREM или преобразо-інятся в случая
хі           і
і         іпреобразовании BCDівание BCD или целогоікогда програм-
 і           і
і         іили целого. При   і                    іное обеспечени
еі           і
і         івыполнении опера- і                    ісистем 80287/ 
 і           і
і         іции вначале выпол-і                    і8087 попадет в
 і           і
і         іняется нормализа- і                    іловушку.      
 і           і
і         іция значения.     і                    і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іИсключе- іИсключение "денор-іИсключение "денорма-іНеобходимость 
 іПовышение, і
іние      імализованное числоілизованное число" неів изменении   
 іпроизводи- і
іденорма- івозникает в транс-івозникает в транс-  іобработчика   
 ітельности  і
ілизован- іцендентных коман- іцендентных командах іисключений воз
-ідля норма- і
іного     ідах и FXTRACT.    іи FXTRACT.          іникает только 
 ільного     і
ічисла    і                  і                    іпри специаль- 
 іслучая.    і
і         і                  і                    іной обработке 
 і           і
і         і                  і                    іразличных кодо
ві           і
і         і                  і                    іопераций.     
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іИсключе- іМаскированное     іМаскированное исклю-іМаскированное 
 іСовмести-  і
іние пере-іисключение пере-  ічение переполнения. іисключение    
 імость 754  і
іполнения іполнения.         і                    іпереполнения. 
 істандарта  і
і         і                  і                    і              
 іIEEE.      і
і         іЕсли режим округ- іВ системе 80287/8087іВ большинстве 
 і           і
і         іления установлен  іне возникает исклю- іобобщенных ок-
 і           і
і         іна отбрасывание   ічение переполнения, іругляющих режи
-і           і
і         ілишних цифр (по   ікогда маскрованный  імах роли не иг
-і           і
і         інаправлению к 0), іответ не бесконеч-  ірает. При     
 і           і
і         іто результатом    іность; т.е. сигнал  іотбрасывании  
 і           і
і         ібудет число,      іпереполнения возни- ілишних цифр (п
оі           і
і         ібольшее по модулю.ікает только когда   інаправлению к 
 і           і
і         і                  іконтроль округления і0) программа  
 і           і
і         і                  іне предусматривает  ісистем i486 CP
Uі           і
і         і                  іокругление нуля.    і/387 NPX, при 
 і           і
і         і                  іЕсли округление     іусловии перепо
-і           і
і         і                  іустановлено на отб- ілнения выдает 
 і           і
і         і                  ірасывание лишних    ірезультат, ко-
 і           і
і         і                  іцифр (по направлениюіторый отлича- 
 і           і
і         і                  ік 0), то результатоміется в послед-
 і           і
і         і                  ібудет плюс или минусінем значащем  
 і           і
і         і                  ібесконечность.      ібите мантиссы 
 і           і
і         і                  і                    іпо сравнению с
 і           і
і         і                  і                    ірезультатом   
 і           і
і         і                  і                    іработы програм
-і           і
і         і                  і                    імы системы    
 і           і
і         і                  і                    і80287.        
 і           і
і         і                  і                    і              
 і           і
і         іНемаскированное   іНемаскированное     іНемаскированно
еі           і
і         іисключение пере-  іисключение перепол- іисключение    
 і           і
і         іполнения.         інения.              іпереполнения. 
 і           і
і         і                  і                    і              
 і           і
і         іИсключение точнос-іИсключение точности іПри помещении 
 і           і
і         іти помечено. При  іне помечено, и ман- ірезультата в  
 і           і
і         іпомещении резуль- ітисса не округляетсяістек, программ
аі           і
і         ітата в стек манти-і                    ісистем i486 CP
Uі           і
і         ісса округляется   і                    і/387 NPX при  
 і           і
і         ісогласно биту     і                    іусловии пере- 
 і           і
і         іуправления точно- і                    іполнения выдае
ті           і
і         істью (PC) слова   і                    ірезультат,    
 і           і
і         іуправления или    і                    іотличный от   
 і           і
і         ісогласно коду     і                    ірезультата ра-
 і           і
і         іоперации.         і                    іботы программы
 і           і
і         і                  і                    ісистем 80287/ 
 і           і
і         і                  і                    і8087. Отличие 
 і           і
і         і                  і                    іпроявляется   
 і           і
і         і                  і                    ітолько при    
 і           і
і         і                  і                    івыполнении    
 і           і
і         і                  і                    іобработчика   
 і           і
і         і                  і                    іисключений.   
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іИсключе- іОбстоятельства    іОбстоятельства      іМаскированное 
 іСовмести-  і
іние отри-іотрицательного    іотрицательного      іисключение от-
 імость 754  і
іцатель-  іпереполнения.     іпереполнения.       ірицательного  
 істандарта  і
іного пе- і                  і                    іпереполнения. 
 іIEEE.      і
іреполне- і                  і                    і              
 і           і
іния      і                  і                    і              
 і           і
і         і                  і                    і              
 і           і
іДва родс-іКогда исключение  іКогда исключение    іНет влияния.  
 і           і
ітвенных  іотрицательного    іотрицательного пере-іИсключение    
 і           і
іслучая   іпереполнения      іполнения маскирован-іотрицательного
 і           і
івызывают імаскированно,     іно и округление     іпереполнения  
 і           і
іотрицате-івозникновение сиг-івыполняется в сторо-іслучается реже
,і           і
ільное    інала исключения   іну 0, флаг исключе- ікогда округле-
 і           і
іперепол- іпроисходит и когдаіния отрицательного  іние выполняетс
яі           і
інение:   ірезультат очень   іпереполнения устана-іпо направлению
 і           і
і         імал и когда при   івливается на "кроше-ік 0.          
 і           і
і1. Возни-іденормализации    ічность" вне зависи- і              
 і           і
і   кает  ірезультата проис- імости от потери     іИсключение    
 і           і
і"крошеч- іходит потеря точ- іточности.           іотрицательного
 і           і
іный" рез-іности.            і                    іпереполнения  
 і           і
іультат.  і                  і                    іне маскированн
оі           і
іКрошечноеіОтклик на отрица- іОтклик на отрицате- і              
 і           і
ічисло,по ітельное переполне-ільное переполнение. іПри помещении 
 і           і
іпричине  іние.              і                    ірезультата в  
 і           і
ісвоей ма-і                  і                    істек программа
 і           і
ілости,   іКогда исключение  іКогда исключение    ісистем i486 CP
Uі           і
іможет вы-іотрицательного    іотрицательного пере-і/387 NPX при  
 і           і
ізвать не-іпереполнения      іполнения не маски-  іусловии отри- 
 і           і
ісколько  інемаскированно и  ірованно и адресатом іцательного    
 і           і
ідругих   ікоманда поддержи- іявляется стек, ман- іпереполнения  
 і           і
іисключе- івает сохранение   ітисса не округляетсяівыдает резуль-
 і           і
іний (нап-ірезультата в стекеі, а остается как    ітат, отличный 
 і           і
іример ис-і, мантисса округ- іесть.               іот результата 
 і           і
іключение іляется, для команді                    іработы програм
-і           і
іперепол- іконтролируемых PC,і                    імы систем 8028
7і           і
інения приіс точностью, соот-і                    і/8087. Отличие
 і           і
іделении).іветствующей точно-і                    ікасается тольк
оі           і
і         істи в бите управ- і                    імладшего знача
-і           і
і2. Потеряіления точностью   і                    іщего бита ман-
 і           і
іточности і(PC)слова управле-і                    ітиссы и сущест
-і           і
іпри дено-іния, в других слу-і                    івенно только  
 і           і
ірмализа- ічаях, с повышеннойі                    ідля обработчик
аі           і
іции кро- іточностью.        і                    іисключений.   
 і           і
ішечного  і                  і                    і              
 і           і
ічисла.   і                  і                    і              
 і           і
і         і                  і                    і              
 і           і
іКакой    і                  і                    і              
 і           і
іиз этих  і                  і                    і              
 і           і
іслучаев  і                  і                    і              
 і           і
іприводит і                  і                    і              
 і           і
ів дейст- і                  і                    і              
 і           і
івие иск- і                  і                    і              
 і           і
ілючение  і                  і                    і              
 і           і
іотрицате-і                  і                    і              
 і           і
ільное пе-і                  і                    і              
 і           і
іреполне- і                  і                    і              
 і           і
іние зави-і                  і                    і              
 і           і
ісит от   і                  і                    і              
 і           і
ітого ма- і                  і                    і              
 і           і
іскированоі                  і                    і              
 і           і
і   ли ис-і                  і                    і              
 і           і
іключение.і                  і                    і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іИсключе- іНет различий в    іКогда исключение    іНикакого, но  
 іУсовершен- і
іние стар-істаршинстве исклю-іденормализации не   ів системах i48
6іствование  і
ішинства  ічений денормализа-імаскировано,  задачаіCPU/387 NPX   
 іопераций   і
і         іции в зависимости іимеет преимушество  іможет мешать  
 і           і
і         іот того, маскиро- істаршинства над     інекоторым дено
-і           і
і         івано  ли исключе- івсеми другими исклю-ірмализованным 
 і           і
і         іние или нет.      ічениями.            іоперандам, не 
 і           і
і         і                  і                    інуждающимся в 
 і           і
і         і                  і                    інормализации  
 і           і
АДДДДДДДДДБДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДД
ДБДДДДДДДДДДДЩ
25.2.2  Слова тега, состояния и управления
----------------------------------------------------------------
ЪДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДД
ДВДДДДДДДДДДДї
і         і          Описание  различий           і  Влияние на  
 і  Причина  і
і  Выход  ГДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДґ  программное 
 і различий  і
і         і Поведение систем і Поведение систем   і  обеспечение 
 і           і
і         і i486 CPU/387 NPX і  80287/8087        і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іБиты C3- іПосле FINIT, неза-іПосле FINIT, незаве-і  Никакого.   
 іУлучшено   і
іC0 слова івершенной FPREM и ішенной FPREM и пере-і              
 іобеспечениеі
ісостоянияіперезапуска аппа- ізапуска аппаратуры, і              
 ісогласован-і
і         іратуры, эти биты  ісистемы 80287/8087  і              
 іности сос- і
і         іустанавливаются в іоставляют эти биты  і              
 ітояния     і
і         іноль.             інеизменными (содер- і              
 іпосле пере-і
і         і                  іжащими предыдущие   і              
 ізагрузки.  і
і         і                  ізначения).          і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іБит C2   іБит 10 (C2) обслу-іЭтот бит не опреде- іНикакого. Прог
-іУлучшена   і
іслова    іживается как бит  ілен для FPTAN.      іраммы не прове
-івозможностьі
ісостоянияінезаверщенности   і                    іряют C2 после 
 ібыстрой    і
і         ідля FPTAN.        і                    іFPTAN.        
 іпроверки   і
і         і                  і                    і              
 ідиапазона  і
і         і                  і                    і              
 іоперанда.  і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іКонтроль іПоддерживается    іПоддерживаются и    іПрограммное   
 іСовместимо-і
ібесконе- ітолько аффинное   іаффинное и проекци- іобеспечение,  
 ість 754    і
ічности   ізамыкание. Бит 12 іонное замыкание.    ікоторое требуе
тістандарта  і
і         іостается програм- іПосле команды RESET іпроецирования 
 іIEEE.      і
і         імируемым, но не   ів слово управления  іарифметической
 і           і
і         іиспользуется в    іпроецируется значе- ібесконечности 
 і           і
і         іоперациях.        іние по умолчанию.   іможет давать  
 і           і
і         і                  і                    іразличные резу
-і           і
і         і                  і                    ільтаты.       
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іБит 6    іКогда возникает   іКогда возникает иск-іНикакого.     
 іВнесенные иі
іслова    іисключение неопре-ілючение неопределен-іСуществующие  
 ідобавляемыеі
ісостоянияіделенной операции іной операции при    іобработчики   
 іулучшения. і
іпри ошиб-іпри переполнении  іпереполнении или от-іисключений не 
 і           і
іках стекаіили отрицательном ірицательном перепол-інуждаются в из
-і           і
і         іпереполнении стекаінении стека, то в   іменениях,но   
 і           і
і         і, то в слове сос- іслове состояния     імогут быть рас
-і           і
і         ітояния устанавли- іустанавливается     іширены  при ис
-і           і
і         івается не только  ітолько бит 0 (IE).  іпользовании   
 і           і
і         ібит 0 (IE), но и  іБит 6 зарезервированідополнительной
 і           і
і         ібиты 6 - показыва-і                    іинформации.   
 і           і
і         іет ошибку стека и і                    і              
 і           і
і         і9 (C1) - перепол- і                    і              
 і           і
і         інение или отрица- і                    і              
 і           і
і         ітельное перепол-  і                    і              
 і           і
і         інение. Бит 6      і                    і              
 і           і
і         івызывается SF и   і                    і              
 і           і
і         іпомогает разли-   і                    і              
 і           і
і         ічать,произошло ли і                    і              
 і           і
і         іисключение при    і                    і              
 і           і
і         іпереполнении/     і                    і              
 і           і
і         іотрицательном пе- і                    і              
 і           і
і         іпеполненни стека  і                    і              
 і           і
і         іили в результате  і                    і              
 і           і
і         іопераций над      і                    і              
 і           і
і         ічислами.          і                    і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іСлово    іКогда с командами іСоответствующий тег іПрограммное   
 іПовышение  і
ітега.    іFLDENV или FRSTOR іпроверяется перед   іобеспечение   
 іэффектив-  і
і         ізагружается слово ікаждым обращением к іможет работать
 іности      і
і         ітега, значение    ірегистру для опреде-іневерно, если 
 і           і
і         іслова тега интерп-іления класса операн-іиспользуются  
 і           і
і         іретируется только іда в регистре; тег  ікоманды FLDENV
 і           і
і         ікак "пустое" (зна-іизменяется после    іили FRSTOR,   
 і           і
і         ічение 11) или     ікаждого изменения   іизменяющие    
 і           і
і         і"непустое" (значе-ірегистра так, что   ізначения тегов
 і           і
і         іния 00, 01 и 10). ітег отражает послед-і(отличные от  
 і           і
і         іПоследующие опера-інее состояние регис-іпустых) на от-
 і           і
і         іции на непустом   ітра. Программист    іличные от соде
-і           і
і         ірегистре проверяютіможет загружать тег іржимого регист
-і           і
і         ізначение в регист-іс значением не соот-іров.          
 і           і
і         іре, но не значениеіветствующим содержи-і              
 і           і
і         ів теге. Команды   імому регистра (нап- і              
 і           і
і         іFSTENV и FSAVE    іример, в регистре   і              
 і           і
і         іпроверяют непустойінаходится законное  і              
 і           і
і         ірегистр и помещаютісодержимое, а тег   і              
 і           і
і         іверные значения в іговорит "специаль-  і              
 і           і
і         ітеги перед сохра- іное"; системы 80287/і              
 і           і
і         інием слова тега.  і8087 в этом случае  і              
 і           і
і         і                  іотдают предпочтение і              
 і           і
і         і                  ітегу и не проверяют і              
 і           і
і         і                  ірегистр).           і              
 і           і
АДДДДДДДДДБДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДД
ДБДДДДДДДДДДДЩ
25.2.3    Набор команд
----------------------------------------------------------------
ЪДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДД
ДВДДДДДДДДДДДї
і         і          Описание  различий           і  Влияние на  
 і  Причина  і
і  Выход  ГДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДґ  программное 
 і различий  і
і         і Поведение систем і Поведение систем   і  обеспечение 
 і           і
і         і i486 CPU/387 NPX і  80287/8087        і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFBSTP,   іПоддерживаются    іОперации с денорма- іМожет требова-
 іСовместимо-і
іFDIV,    іоперации с денор- ілизованным операндоміться изменение
 ість 754    і
іFIST(P), імализованным опе- івызывают исключение іобрабтчика иск
-істандарта  і
іFPREM,   ірандом. Может воз-інеопределенной опе- ілючений если  
 іIEEE.      і
іFSQRT    іникать исключение ірация. Отрицательноеідается различ-
 і           і
і         іотрицательного    іпереполнение невоз- іная обработка 
 і           і
і         іпереполнения.     іможно.              іразличным кода
мі           і
і         і                  і                    іопераций. Из- 
 і           і
і         і                  і                    іредка возможно
 і           і
і         і                  і                    івозникновение 
 і           і
і         і                  і                    іисключений нео
-і           і
і         і                  і                    іпределенной   
 і           і
і         і                  і                    іоперации.     
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFSCALE   іКоэффициент масштаіКоэффициент масштабиіРазличный резу
-іПовышение  і
і         ібирования операн- ірования операнда    ільтат когда   
 іпроизводи- і
і         іда не ограничива- іограничен. Если     і0<і ST(1) і<1.
 ідельности. і
і         іется. Если        і0 < і ST (1) і < 1, і              
 і           і
і         і0 < і ST(1) і < 1,ірезультат неопреде- і              
 і           і
і         ікоэффициент масштаілен и не возникает  і              
 і           і
і         ібирования ноль;   іисключения.         і              
 і           і
і         іпоэтому ST(0) ос- і                    і              
 і           і
і         ітается без измене-і                    і              
 і           і
і         іний. Если округле-і                    і              
 і           і
і         інный результат не і                    і              
 і           і
і         іточен или произош-і                    і              
 і           і
і         іла потеря точностиі                    і              
 і           і
і         і(маскированное    і                    і              
 і           і
і         іотрицательное     і                    і              
 і           і
і         іпреполнение) вызы-і                    і              
 і           і
і         івается исключение і                    і              
 і           і
і         іточности.         і                    і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFPREM1   іВыполняет согласо-іНе существует.      іНикакого.     
 іСовмести-  і
і         івание остатка час-і                    і              
 імость 754  і
і         ітного с стандартомі                    і              
 істандарта  і
і         і754 IEEE.         і                    і              
 іIEEE и по- і
і         і                  і                    і              
 івышение    і
і         і                  і                    і              
 іпроизводи- і
і         і                  і                    і              
 ітельности. і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFPREM    іБиты C0, C3, C1   іБиты частного непра-іНикакого. Прог
-іПовышение  і
і         іслова состаяния   івильны, когда выпол-іраммное обеспе
-іпроизводи- і
і         іверно отображают  іняется уменьшение наічение,обрабаты
-ітельности. і
і         ітри младших бита  і64**N + M,где N >= 1івающее ошибку,
 і           і
і         ічастного.         і,a M = 1 или М = 2. іне затрагива- 
 і           і
і         і                  і                    іется.         
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFUCOM,   іВыполняют согласо-іНе существует.      іНикакого.     
 іСовместимо-і
іFUCOMP,  івание неупорядоче-і                    і              
 ість 754    і
іFUCOMPP  інного сравнения соі                    і              
 істандарта  і
і         істандартом 754    і                    і              
 іIEEE.      і
і         іIEEE.             і                    і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFPTAN    іИнтервал значений іИнтервал значений   іНикакого.     
 іПовышение  і
і         іоперанда          іоперанда ограничен  і              
 іпроизводи- і
і         іслабо ограничен   і(іST(0)і < Пи/4);   і              
 ітельности. і
і         і(іST(0)і < 2**63);іинтервал значений   і              
 і           і
і         іуменьшение операн-іоперанда может быть і              
 і           і
і         іда внутреннее, с  іуменьшен использо-  і              
 і           і
і         іиспользованием    іванием FPREM.       і              
 і           і
і         івнутренней конста-і                    і              
 і           і
і         інты Пи/4,что повы-і                    і              
 і           і
і         ішает точность.    і                    і              
 і           і
і         і                  і                    і              
 і           і
і         іПосле переполненияіПосле переполнения  і              
 іСовместимо-і
і         істека при маскиро-істека  при маскиро- і              
 ість 754    і
і         іванном исключении іванном исключении   і              
 істандарта  і
і         інеопределенная    інеопределенной опе- і              
 іIEEE.      і
і         іоперация  ST и    ірации, исходные опе-і              
 і           і
і         і  ST(1) содержат  іранды остаются без  і              
 і           і
і         іскрытые NaN       іизменения, но содер-і              
 і           і
і         і                  іжимое ST(1) заносит-і              
 і           і
і         і                  іся в стек.          і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFSIN,    іВыполнение трех   іНе существуют.      іНикакого.     
 іПовышение  і
іFCOS,    іобщих тригономет- і                    і              
 іпроизводи- і
іFSINCOS  ірических функций  і                    і              
 ітельности. і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFPATAN   іИнтервал значений ііST(0)і должен быть іНикакого.     
 іПовышение  і
і         іоперандов не огра-іменьше іST(1)і      і              
 іпроизводи- і
і         іничен.            і                    і              
 ітельности. і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іF2XM1    іРасширен интервал іПоддерживается инте-іНикакого.     
 іПовышение  і
і         іоперанда  (-1 <=  ірвал операнда       і              
 іпроизводи- і
і         і ST(0) <= +1)     і0 <= ST(0) <= 0.5.  і              
 ітельности. і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFLD      іНе выдает сообще- іВыдает сообщение о  іНикакого.     
 іПовышение  і
івеществе-іние о исключении  іисключении денорма- і              
 іпроизводи- і
інного с  іденормализации,   ілизации.            і              
 ітельности. і
ірасширен-ітак как команда неі                    і              
 і           і
іной точ- іарифметическая.   і                    і              
 і           і
іностью   і                  і                    і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFXTRACT  іEсли операнд ноль іЕсли операнд ноль,  іНикакого. Прог
-іРекоменда- і
і         івозникает сообще- іто ST(1) тоже ноль иіраммное обеспе
-іции IEEE   і
і         іние об исключении іне возникает сообще-ічение обычно  
 і754 по пол-і
і         іделения на ноль и іния об исключении.  іобходится нуле
мінной подде-і
і         іST(1) становится  іЕсли операнд + оо,  іи оо.         
 іржке функ- і
і         і- оо. Если операндіто появляется сооб- і              
 іции logb   і
і         і+ оо, не возникаетіщение об исключении і              
 і           і
і         ісообщения об иск- інеопределенной опе- і              
 і           і
і         ілючении.          ірации.              і              
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFLD      іОсуществляется    іУправление округле- іРезультат буде
тіРекоменда- і
іконстантыіуправление округ- інием не осуществля- іодинаков для  
 іции IEEE   і
і         ілением.           іется.               ісистем 80287/ 
 і754.       і
і         і                  і                    і8087, когда   
 і           і
і         і                  і                    іуправление ок-
 і           і
і         і                  і                    іруглением уста
-і           і
і         і                  і                    іновлено на ок-
 і           і
і         і                  і                    іугление к нулю
,і           і
і         і                  і                    і- оо и (в слу-
 і           і
і         і                  і                    ічае FLDL2T) ок
-і           і
і         і                  і                    іругление к бли
-і           і
і         і                  і                    іжайшему. При о
кі           і
і         і                  і                    іруглении к +оо
 і           і
і         і                  і                    іи округлении к
 і           і
і         і                  і                    іближайшему (за
 і           і
і         і                  і                    іисключением   
 і           і
і         і                  і                    іFLDL2T) резуль
-і           і
і         і                  і                    ітат будет раз-
 і           і
і         і                  і                    іличаться в од-
 і           і
і         і                  і                    іном из младших
 і           і
і         і                  і                    ізначащих битов
 і           і
і         і                  і                    імантиссы. Тот 
 і           і
і         і                  і                    іже результат  
 і           і
і         і                  і                    ібудет для     
 і           і
і         і                  і                    ікоманд FLD1 и 
 і           і
і         і                  і                    іFLDZ.         
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFLD      іВ случае загрузки іВ случае загрузки   іЕсли следующим
иіСовмести-  і
іодинарнойіденормализованногоіденормализованного  ікомандами буду
тімость 754  і
і/двойной ічисла происхоит   ічисла происходит егоіFXTRACT или   
 істандарту  і
іточности іего преобразованиеіпреобразование в    іFXAM,системы  
 іIEEE.      і
і         ік расширенной     іненормализованное.  іi486 CPU/387  
 і           і
і         іточности (так как і                    іNPX и 80287/  
 і           і
і         іего помещают в    і                    і8087 будут ра-
 і           і
і         істек).            і                    іботать по-раз-
 і           і
і         і                  і                    іному.         
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFLD      іВ случае загрузки іВ случае загрузки   іОбработчик иск
-іСовмести-  і
іодинарнойісигнального NaN-а,ісигнального NaN-а   ілючений нужда-
 імость 754  і
і/двойной івозникает исклю-  іисключения не       іется в модифи-
 істандарту  і
іточности ічение неопреде-   івозникает.          ікации для обра
-іIEEE.      і
і         іленной операции.  і                    іботки данного 
 і           і
і         і                  і                    іслучая.       
 і           і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFSETPM   іОбрабатывется как іИнформирует процес- іНикакого.     
 іCPU i486/  і
і         іFNOP (нет опера-  ісор 80287, что сис- і              
 і386 обраба-і
і         іции).             ітема находится в    і              
 ітывают всю і
і         і                  ізащищенном режиме.  і              
 іинформацию і
і         і                  і                    і              
 іадресации иі
і         і                  і                    і              
 іисключений і
і         і                  і                    і              
 ікак в заши-і
і         і                  і                    і              
 іщенном ре- і
і         і                  і                    і              
 іжиме так и і
і         і                  і                    і              
 ів незащище-і
і         і                  і                    і              
 інном.      і
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іFXAM     іПри анализе пус-  іМожет генерировать  іНикакого.     
 іУсовершенс-і
і         ітого регистра не  іэти комбинации      і              
 ітвования,  і
і         ібудет генерирова- інаравне с другими   і              
 іобеспечива-і
і         іться в C0-C3 ком- і                    і              
 іющие пов-  і
і         ібинация равная    і                    і              
 іторяемость і
і         і1101 или 1111.    і                    і              
 ірезультатові
ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД
ДЕДДДДДДДДДДДґ
іВсе тран-іМогут генерироватьіБит округления в    іНикакого.     
 іУсовершенс-і
ісценден- іразличные резуль- ібольшую сторону     і              
 ітвования   і
ітные ко- ітаты в бите окру- іслова состояния     і              
 ісостояний  і
іманды    ігления в большую  інеопределен для     і              
 іoкругления і
і         історону слова     іэтих команд.        і              
 ісигнала.   і
і         ісостояния.        і                    і              
 і           і
АДДДДДДДДДБДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДД
ДБДДДДДДДДДДДЩ
25.3  Отличия от систем 8086/8087.
----------------------------------------------------------------
Процессор i486, работающий в режиме реальных адресов, будет
выполнять программы процессора 8087 без существенной
модификации. Тем не менее, за счет различий в обработке
числовых исключений в процессоре i486 и 8087 NPX, процедуры
обработки исключений скорее всего должны будут измениться.
В этом разделе дается подробное описание того, как программы
процессора 8087 можно поставить на процессор i486.
1. Процессору 8087 требуется контроллер прерывания (8259А) для
   прерывания CPU при возникновении немаскированного исключения.
   Следовательно, все команды в обработчиках числовых прерываний
   процессора 8087, ориентированные на этот контроллер, должны
   быть уничтожены.
2. Команды FENI/FNENI и FDISI/FNDISI процессора 8087 не
   выполняют никакой полезной работы на процессоре i486.
   Если процесссор i486 обнаружит в потоке команд один из этих
   кодов операций, он будет проигнорирован - ни одно из
   внутренних состояний процессора не будет изменено.
   Если программа процессора 8087 будет выполняться
   на процессоре i486, процедуры обработки исключений,
   содержащие эти команды, вряд ли будут полностью переносимы.
3. В реальном и защищенном режимах (исключая виртуальный режим
   процессора 8086) вектор прерывания 16 должен указывать на
   процедуру обработки числового исключения. В виртуальном
   режиме процессора 8086 монитор V86 может быть
   запрограммирован с различным размещением векторов прерываний
   для числовых исключений.
4. Адрес программы ESC, записанный в процессоре i486, включает
   некоторые начальные префиксы перед кодом операции ESC.
   Соответствующий адрес в системе 8086/8087 не включает
   начальных префиксов.
5. В защищенном режиме процессора i486 (исключая виртуальный
   режим процессора 8086) формат хранимой команды и адресных
   указателей отличается от форматов, принятых в системе 8087.
   Код операции команды не сохраняется в защищенном режиме -
   при необходимости обработчики исключений должны
   восстанавливать его из памяти.
6. Прерывание 7 будет существовать в процессоре i486 при
   выполнении команд ESC, при установленных TS (переключение
   задачи) или EM (эмуляция) в MSW (TS = 1 или EM = 1).
   При установленном TS коанда WAIT тоже вызовет прерывание 7.
   Для обработки этих ситуаций в программу процессора i486
   следует включить обработчик исключений.
7. При попадании начального адреса числового операнда вне
   размера сегмента возникнет прерывание 13. Для сообщения
   об этой ошибке следует включить обработчик исключения.
8. Все числовые команды процессора i486 за исключением команд
   управления FPU синхронизируются автоматически -  процессор
   автоматически ждет перед выполнением следующий команды ESC,
   пока все операнды будут переданы. Для осущесттвления этой
   синхронизации не требуется явных команд WAIT. Для
   сопроцессора 8087, используемого с процессорами 8086 и 8088,
   явные команды WAIT требуются перед каждой числовой командой
   для осуществления синхронизации. Хотя программы с явными
   командами WAIT для процессора 8087 выполнятся правильно на
   процессоре i486 без реассемблирования, эти команды не нужны.
9. Поскольку процессору i486 не требуются команды WAIT перед
   каждой числовой операцией, ассемблер ASM386/486 не
   генерирует эти команды автоматически. Ассемблер же ASM86
   перед каждой командой ESC ставит команду WAIT. Хотя
   числовые процедуры, сгенерированные с использованием
   ассемблера ASM86, будут выполняться на процессоре i486
   правильно, реассемблирование с использованием ASM386/486
   даст, возможно, более компактный код и более быстрое
   выполнение.
   Команды управления для FPU процессора i486 могут быть
   кодированы как с использованием формы мнемоники WAIT,
   так и формы No - WAIT.
   Формы WAIT этих команд вызовут в ассемблере ASM386/486
   постановку команды WAIT перед каждой командой ESC, как
   это сделал бы ассемблер ASM86.
10. Адрес операнда памяти, записываемый командами FSAVE или
    FSTENV, будет неопределен, если предыдущая команда ESC
    не ссылалась на память.
11. Поскольку процессор i486 по возможности автоматически
    нормализует ненормализованные числа, программа процессора
    8087, использующая отдельно исключение денормализации для
    нормализации денормализованных операндов, может выполнятся
    на процессоре i486 при маскировании исключения
    денормализации. В этом случае обработчик исключения
    денормализации процессора 8087 не будет использоваться на
    процессоре i486. Числовая программа будет выполняться
    быстрее, если процессор i486 будет выполнять нормализацию
    денормализованных операндов.


Яндекс цитирования