Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 136 137 138 139 140 141 142  143 144 145 146 147 148 149 ... 198
                    ¦           ¦       ¦   ¦   ¦   ¦   ¦   ¦   ¦Неверная
       Занято        ¦                  ¦   ¦   ¦   ¦   ¦   ¦   операция
       Указатель     ¦         Коды      ¦   ¦   ¦   ¦   ¦   ¦Ненормализо-
       на вершину    ¦       условий     ¦   ¦   ¦   ¦   ¦   ¦ванный опе-
         стека                          ¦   ¦   ¦   ¦   ¦   ¦      ранд
        ЪДДДДДДДДДДДДДДДДДДДДДДД¬        ¦   ¦   ¦   ¦   ¦   
        ¦          ЪДДДДДДДДДДД¬¦        ¦   ¦   ¦   ¦    Деление на ноль
        ¦000 ----> ¦ Регистр 0 ¦¦        ¦   ¦   ¦    Переполнение
        ¦001 ----> ¦ Регистр 1 ¦¦        ¦   ¦     Потеря значимости
        ¦010 ----> ¦ Регистр 2 ¦¦        ¦      Точность         Маска
        ¦011 ----> ¦ Регистр 3 ¦¦        ¦Зарезервирован      разрешения
        ¦100 ----> ¦ Регистр 4 ¦¦        ¦                    прерывания
        ¦101 ----> ¦ Регистр 5 ¦¦        
        ¦110 ----> ¦ Регистр 6 ¦¦        Требование прерывания
        ¦111 ----> ¦ Регистр 7 ¦¦
        ¦          АДДДДДДДДДДДЩ¦
        АДДДДДДДДДДДДДДДДДДДДДДДЩ
                           Рис.10-9. Слово состояния NPX

             Индикатор занятости сигнализирует о том,  выполняет ли в  на-
         стоящее время NPX обработку команды.  Этот индикатор не очень по-
         лезен для нас,  так как содержимое слова состояния не может  быть
         использовано до тех пор, пока NPX не объявит, что он завершил за-
         пись слова состояния.  Исходя из этого, Вы знаете, что NPX свобо-
         ден, так как команда FWAIT выполнена.
             Указатель вершины  стека,  в  битах  с 11 по 13,  полезен для
         программиста,  который пишет сложные служебные программы NPX, вы-
         полняющие  последовательные операции и сохраняющие многочисленные
         значения в стеке NPX. В этих случаях, для того, чтобы убедиться в
         том,  что для следующей операции имеется достаточно места,  перед
         обработкой программы проверьте глубину стека.  Если в стеке недо-
         статочно места для поддержки операции, некоторые или все регистры
         должны быть сохранены в памяти для того,  чтобы появилась возмож-
         ность выполнить программу без нежелательных последствий.
             Указатель стека инициализируется  командой  FINIT  для  того,
         чтобы  указывать на 000(0),  а каждая успешно загруженная команда
         уменьшает указатель стека циклически возвращая 111(7) до тех пор,
         пока  он не достигнет 001(1).  Указателем стека можно манипулиро-
         вать с помощью  команд  FINCSTP  (увеличить  указатель  стека)  и
         FDECSTP  (уменьшить указатель стека).  Тем не менее,  так как эти
         операции не отмечают регистры как  пустые,  использование  команд
         FDECSTP или FINCSTP может запретить применение индикатора вершины
         стека для проверки свободных регистров.
             Коды условий  необходимы  чаще всего для того,  чтобы решить,
         какое действие предпринять в пункте принятия  решения  программы.
         Далее  мы рассмотрим несколько примеров использования кодов усло-
         вий.  Короче говоря,  для проверки кодов условий,  запишите слово
         состояния в память с помощью команды FSTSW;  затем проверьте коды
         с помощью главного центрального процессора. При сохранении инфор-

                                      - 10-17 -
         мации состояния NPX для проверки центральным процессором не забы-
         вайте добавлять  команду  FWAIT  после команды записи.  Следующий
         фрагмент программы демонстрирует,  как может появиться последова-
         тельность сравнения.
               .
               .
               .
         sw87  dw    ?          ; пространство для слова состояния NPX
               .
               .
               .
               FCOM  ST(1)      ; проверить отношение между  ST и ST(1)
               FSTSW sw87       ; записать слово состояния NPX
               FWAIT            ; ждать завершения работы
               test  sw87,4000h ; операнды равны?
               je    are_equl   ; да...
                .
                .
                .
             Значения, присвоенные этим кодам различными командами сравне-
         ния,  приведены в таблице 10-5. Обратите внимание, что коды усло-
         вий не попадают в одну группу,  но делятся  на  части  указателем
         стека, и что коды, возвращаемые командами FCOM и FTSR, также раз-
         деляются битом условия С1, который не используется. Отметьте, что
         NAN означает "не-число".
                                                         Таблица 10-5
         Условия состояния, установленные командами FCOM, FTST и FXAM
         ДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД
                       ¦      КОДЫ УСЛОВИЙ     ¦
            Команда    ГДДДДДДДДДДДДДДДДДДДДДДДґ      Результат
                       ¦    C3   C2  C1  C0    ¦
         ДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДД
                       ¦                       ¦
         .      F      ¦    0    0   *   0     ¦  ST > источника
         .      C      ¦    0    0   *   1     ¦  ST < источника
         .      O      ¦    1    0   *   0     ¦  ST = источник
         .      M      ¦    1    1   *   1     ¦  ST ? источник
         .      F      ¦    0    0   *   0     ¦  ST > 0.0
         .      T      ¦    0    0   *   1     ¦  ST < 0.0
         .      S      ¦    1    0   *   0     ¦  ST = 0.0
         .      T      ¦    1    1   *   1     ¦  ST ? 0.0
         .      F      ¦    0    0   0   0     ¦  + Ненормализованное
         .      X      ¦    0    0   0   1     ¦  + NAN
         .      A      ¦    0    0   1   0     ¦  - Ненормализованное
         .      M      ¦    0    0   1   1     ¦  - NAN
         .             ¦    0    1   0   0     ¦  + Нормализованное
         .             ¦    0    1   0   1     ¦  + Бесконечность
         .             ¦    0    1   1   1     ¦  - Бесконечность
         .             ¦    1    0   0   0     ¦  + 0
         .             ¦    1    0   0   1     ¦    Пусто
         .             ¦    1    0   1   0     ¦  - 0
         .             ¦    1    0   1   1     ¦    Пусто
         .             ¦    1    1   0   0     ¦  + Денормализованное
         .             ¦    1    1   0   1     ¦    Пусто
         .             ¦    1    1   1   0     ¦  - Денормализованное
         .             ¦    1    1   1   1     ¦    Пусто
         ДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДД
             (*) - Не существенно

                                      - 10-18 -


                          Обработка особых ситуаций в NPX

             Младший байт  слова состояния содержит флаги особых ситуаций.
         Эти флаги соответствуют маскам ситуаций в слове управления. Когда
         имеет  место  особая ситуация,  NPX устанавливает соответствующий
         флаг и затем проверяет,  замаскирована эта ситуация или нет.  Так
         как  большинство  операций применяют замаскированный ответ (внут-
         ренние обработчики прерываний NPX), мы свели их действие в табли-
         цу  10-6. Не забывайте о периодической проверке на наличие особых
         ситуаций в целях обеспечения точности результатов.  Если  имеется
         особая ситуация,  то устанавливается соответствующий флаг и стоит
         до тех пор,  пока он не будет сброшен  посредством  инициализации
         NPX (команда FINIT) или путем использования команды сброса ситуа-
         ции FCLEX. Так как флаги остаются установленными, они обеспечива-
         ют кумулятивную запись любых ошибок, возникающих в процессе обра-
         ботки.
             Другой способ обработки особых ситуаций заключается в размас-
         кировании одной или более ситуаций и разрешении прерываний в сло-
         ве управления NPX.  В этом режиме,  если NPX обнаруживает  особую
         ситуацию,  он сигнализирует прерыванием и требует,  чтобы главный
         центральный процессор обработал ситуацию.  Тем не менее,  NPX  не
         всегда  связан с линией запроса прерывания центрального процессо-
         ра! Для размещения запросов прерываний NPX требуется внешняя схе-
         ма  обработчика  прерываний.  Если  Ваша  система не поддерживает
         внешние прерывания NPX, то не разрешайте их!
             Если Ваша система поддерживает внешние прерывания и Вы разре-
         шили их,  то необходимо обеспечить обработчик особых ситуаций,  в
         то время,  когда NPX прерывает работу главного центрального  про-
         цессора.  Для  определения  причины  возникшей проблемы программа
         центрального процессора должна прочитать слово состояния NPX. Ес-
         ли  Вы потребуете,  то Ваш обработчик ситуаций тоже может опреде-
         лить команду и операнд, приведшие к возникновению проблемы, путем
         исследования  указателей  команды  и операнда NPX.  Для получения
         этой информации обработчик ситуаций должен выполнить одну из  ко-
         манд NPX, FSTENV или FSAVE. Эти команды записывают в память глав-
         ного центрального процессора по меньшей мере содержание пяти  ре-
         гистров управления NPX (слово состояния,  слово управления, слово
         признака, указатель команды и указатель операнда). Обработчик си-
         туаций  может  восстановить информацию из памяти и обработать ее.
         Если Вы хотите получить более полное представление  об  этих  ре-
         гистрах,  то изучите листинг 10-1 раздела "Примеры программирова-
         ния NPX с помощью MASM",  содержащий  пример  программы,  которая
         сначала сохраняет эту информацию, а затем декодирует ее.
                                                         Таблица 10-6
                       Установленные по умолчанию ответы на
                   особые ситуации NPX. (Ситуации замаскированы)
         ДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Особая ситуация   ¦         Замаскированный ответ
         ДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         Точность             ¦  Возвращает округленный результат
         Потеря значимости    ¦  Денормализованный результат
         Переполнение         ¦  Возвращает бесконечность со знаком
         Деление на ноль      ¦  Возвращает бесконечность со знаком
         .                    ¦  операнда

                                      - 10-19 -
         ДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Особая ситуация   ¦          Замаскированный ответ
         ДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         Денормализованный    ¦  Если операнд памяти, то игнорируется
         операнд              ¦  Если операнд регистра, то переводит в
         .                    ¦  "ненормализованное" и оценивает снова
         Неверная операция    ¦  Если один операнд NAN, то возвращает
         .                    ¦  его. Если оба операнда NAN, то возвра-
         .                    ¦  щает тот,  который имеет большее абсо-
         .                    ¦  лютное значение. Если ни один из опе-
         .                    ¦  рандов не является NAN, то возвращает
         .                    ¦  неопределенность
         ДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                        Использование средств MS-DOS с NPX

             Единственное отличие написания программ с использованием NPX
         от написания программа без его использования заключается  в  том,
         что  применение  сопроцессора  требует большего количества команд
         для применения числовых операций. Так как отличие видно только на
         уровне  команд,  единственными  средствами MS-DOS,  которым нужно
Предыдущая страница Следующая страница
1 ... 136 137 138 139 140 141 142  143 144 145 146 147 148 149 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама