Главная · Поиск книг · Поступления книг · 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 ... 137 138 139 140 141 142 143  144 145 146 147 148 149 150 ... 198
         знать о NPX,  являются MASM и DEBUG.  Все другие средства - LINK,
         LIB и CREF - игнорируют наличие NPX.

                             Использование MASM и NPX

             При использовании MASM с NPX программист просто вводит коман-
         ды NPX таким же образом, как и команды главного центрального про-
         цессора. Команды NPX имеют те же поля, что и команды центрального
         процессора:  метки, коды операций, операнды и комментарии. Единс-
         твенное отличие кодирования команд заключается в том, что операн-
         дами NPX могут быть только регистры или память NPX,  а операндами
         главного центрального процессора могут быть только  его  регистры
         или  память.  В  случае операндов памяти две формы не отличаются.
         Команды NPX могут использовать любую из пяти следующих форм памя-
         ти:

         - Только смещение                  FSTSW      mem_word
         - Только база или индекс           FIADD      word prt [bx]
         - Смещение + база или индекс       FSTP       base[di]
         - База + индекс                    FLDCW      [bp][si]
         - Смещение + база + индекс         FILD       [bp]table[di]

           ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
           ¦                        ВНИМАНИЕ                          ¦
           ¦      MASM  версии 1.25 имеет ошибку,  которая приводит к ¦
           ¦ обмену кодов  операций FSUB c FSUBR  или  FDIV c FDIVR и ¦
           ¦ наоборот, если любой из них использован в "классической" ¦
           ¦ форме  (без определения операндов).  Если Вы пользуетесь ¦
           ¦ более старой версией MASM,  точно определяйте операнды и ¦
           ¦ тип этих команд, например:                               ¦
           ¦ FSUBP    ST(1),ST                                        ¦
           ¦ FDIVRP   ST(1),ST                                        ¦
           ¦   Помните,  что классическая  форма всегда использует    ¦
           ¦   форму выталкивания команды из стека.                   ¦
           АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                                      - 10-20 -

                         NPX переключатели MASM - /r и /s

             После записи  программы в файл,  необходимо использовать MASM
         для ее трансляции.  Если применяется стандартная командная строка
         MASM,  то  каждая  встреченная  команда NPX выдает синтаксическую
         ошибку. Это происходит из-за того, что в режиме нормальной работы
         MASM ничего не знает о NPX. Для трансляции команд NPX надо приме-
         нять переключатель командной строки /r (реальный режим), что ука-
         зывает MASM на наличие в исходном файле команд NPX:

         A:>masm test.asm test.obj test.lst test.crf/r

             Благодаря этому  MASM  узнает,  что  транслируемая  программа
         предназначена для выполнения с реальным NPX. MASM затем генериру-
         ет  правильные коды операций NPX с префиксом кода операции FWAIT,
         если не используется одна из команд FN.  (Тем не менее, обра-
         тите  внимание,  что хотя команда NPX FNOP начинается с FN,  MASM
         генерирует префикс FWAIT.)
             MASM имеет  еще один переключатель,  который указывает ему на
         необходимость трансляции команды NPX. Это переключатель /e (режим
         эмуляции).  Переключатель /e почти идентичен переключателю реаль-
         ного режима,  единственное отличие заключается в том, что команды
         no-wait (FN) не транслируются. Этот переключатель нужен поль-
         зователям,  имеющим эмуляционные библиотеки, которые для эмуляции
         программ могут заменять коды операций NPX вызовами главного цент-
         рального процессора.  Так как MASM не  имеет  такую  эмуляционную
         библиотеку и нет необходимости в ее использовании, если Вы имеете
         реальное NPX, то мы больше не будем обсуждать эту тему.


                              Типы данных NPX в MASM

             Вы теперь  знаете,  что NPX поддерживает семь различных типов
         данных:  слово;  короткое и длинное целое; короткое и длинное ве-
         щественное;  упакованный двоично-десятичный код; и вещественное с
         плавающей запятой.  Для использования этих типов данных в  памяти
         должны быть определены правильные ячейки. В таблице 10-7 показано
         соответствие между типами данных NPX и методами,  применяемыми  в
         MASM для их определения и обращения к ним.
             Ячейки памяти распределяются с помощью  директив  определения
         данных MASM (dw,  dd, dq, или dt) и знака вопроса (?), следующего
         за ними.  Этот формат приказывает MASM зарезервировать пространс-
         тво,  но не инициализировать его.  Для инициализации зарезервиро-
         ванной ячейки, предназначенной для отдельного значения веществен-
         ного    числа,    MASM    обеспечивает   три   различных   формы:
         экспоненциальный формат без экспоненты, экспоненциальный формат с
         экспонентой и реальную (R) форму.  Каждая из этих форм может быть
         использована с любой из  больших  директив  "определения  данных"
         следующим образом:

         double   dd  3.14159         ; экспоненциальный без экспоненты
         quad     dq  1.23456E + 03   ; экспоненциальный с экспонентой
         tenbyte  dt  0123456789ABCDEF0123R     ; реальный

                                      - 10-21 -
                                                         Таблица 10-7
                         Сравнение типов данный NPX и MASM
         ДДДДДДДДДДДДДВДДДДДДДДДДДВДДДДДДДВДДДДДДДВДДДДДДДДДДВДДДДДДДДДДД
         Тип данных   ¦Тип данных ¦ Размер¦ Дирек-¦   Имя    ¦Совмести-
         NPX          ¦ главного  ¦   в   ¦ тива  ¦операнда  ¦мость с
                      ¦   ЦП      ¦ байтах¦ MASM  ¦          ¦NPX
         ДДДДДДДДДДДДД†ДДДДДДДДДДД†ДДДДДДД†ДДДДДДД†ДДДДДДДДДД†ДДДДДДДДДДД
         Целое слово  ¦ Слово     ¦   2   ¦  dw   ¦ word prt ¦   Да
         Короткое     ¦ Двойное   ¦       ¦       ¦          ¦
         целое        ¦ слово     ¦   4   ¦  dd   ¦ dword ptr¦   Да
         Короткое     ¦ Двойное   ¦       ¦       ¦          ¦
         вещественное ¦ слово     ¦   4   ¦  dd   ¦ dwort ptr¦   Нет
         Длинное      ¦ Четверное ¦       ¦       ¦          ¦
         целое        ¦ слово     ¦   8   ¦  dq   ¦ qword ptr¦   Да
         Длинное      ¦ Четверное ¦       ¦       ¦          ¦
         вещественное ¦ слово     ¦   8   ¦  dq   ¦ qword ptr¦   Нет
         Упакованный  ¦ Десятый   ¦       ¦       ¦          ¦   Форма
         BCD          ¦ байт      ¦   10  ¦  dt   ¦ tbyte ptr¦    "R"
         Плавающее    ¦ Десятый   ¦       ¦       ¦          ¦
         вещественное ¦ байт      ¦   10  ¦  dt   ¦ tbyte ptr¦   Да
         ДДДДДДДДДДДДДБДДДДДДДДДДДБДДДДДДДБДДДДДДДБДДДДДДДДДДБДДДДДДДДДДД

             Определение вещественных чисел с  помощью  байта  определения
         (db)  или директив определения слова (dw) не возможно.  Они могут
         быть инициализированы только в целые значения.
             Экспоненциальные форматы  оцениваются  в  формате с плавающей
         запятой (знак,  экспонента и  мантисса),  поскольку  вещественный
         формат  используется  по  основанию  цифра-на-полубайт,   поэтому
         шестнадцатиричное представление вещественного формата точно соот-
         ветствует его определению.
             Обратите внимание,  что хотя MASM может определять веществен-
         ные числа как 4-битовой, так и 8-битовой длины, формат, использу-
         емый для инициализации этих чисел, не совместим с NPX! На рисунке
         10-10  показано,  как  Microsoft  реализует  числа этих размеров.
         Сравнивая их с рисунком 10-2,  Вы увидите, что они совсем разные.
         Если Вам необходимо использовать эти форматы (например,  для сов-
         местимости с существующим программным обеспечением), то для пере-
         вода  одного формата в другой Вы можете написать программу преоб-
         разования.
                 Длинное ЪДДДДДВДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
            вещественное ¦ 81h ¦S¦ Мантисса 55 бит ¦                     ¦
                         АДДДДДБДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
                          63 56 55 54
                            ¦    АДДД 1.0 предполагается
                            ¦
                            ¦
          Короткое          ¦    Смещенная    ЪДДДДДВДВДДДДДДДДДДДДДДДДДД¬
          вещественное      АДДДэкспонентаДДДД¦ 81h ¦S¦  Мантисса 23 бита¦
          в Microsoft MASM          129.0     АДДДДДБДБДДДДДДДДДДДДДДДДДДЩ
                                               31  24 23 22
                                                      АД1.0 предполагается

               Рис.10-10. Форматы вещественных чисел Microsoft MASM.

                             Использование DEBUG с NPX

             DEBUG всегда знает о командах NPX.  Этим  объясняет  то,  что

                                      - 10-22 -
         иногда  при  попытке  "дисассемблирования"  памяти,  DEBUG выдает
         странные команды.  (Одним из методов,  используемых при  отладке,
         является  заполнение неиспользуемой памяти шестнадцатиричным сло-
         вом DEAD.  Этот характерный образец позволяет программисту быстро
         определить,  сколько памяти изменено.  Тем не менее, DEBUG дисас-
         семблирует это как FISUBR WORD PTR [DI + ADDE].)
             Хотя программа DEBUG постоянно находится в режиме NPX, она не
         всегда распознает команды NPX. Программа не выводит на экран и не
         позволяет  транслировать  команды формы FN.  DEBUG распознает
         FWAIT как отдельную команду кода операции NPX,  чем она реально и
         является.  Следовательно,  DEBUG  декодирует  команду  FN как
         стандартную команду, которая не будет иметь префикса FWAIT.
             В противоположность  MASM,  DEBUG  не вставляет автоматически
         префикс FWAIT в стандартные команды NPX. Вы должны помнить о том,
         что необходимо вручную транслировать FWAIT при вводе команды NPX.
             Вы должны также помнить,  что  при  определении  операндов  в
         DEBUG, требуется указывать программе, какой размер имеет операнд:

         FLD    TBYTE PTR [200]

             Скобки требуются  для  того,  чтобы  проинформировать DEBUG о
         том, что число представляет собой адрес, а не прямое значение.

                               Отладка регистров NPX

             Единственное, что DEBUG не может сделать,  так это отобразить
         состояние NPX или содержание любого из его регистров. Если Вы ре-
         шили  проверить какие-либо регистры NPX,  то сначала надо сделать
         так, чтобы NPX записал данные в общую память.
             Для того, чтобы помочь Вам отлаживать программы NPX, мы пред-
         лагаем программу dump87,  содержащуюся в следующем разделе, "При-
         меры программирования NPX с помощью MASM".  Эта программа исполь-
         зует  команду  FSAVE  для  записи  состояния  NPX  с  последующим
         отображением его в более понятной форме на экране дисплея.  Прог-
         ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДД ДД¬
         ¦ Байт младшего адреса  ¦  Байт старшего адреса ¦0,1,2 байта/   ¦
         ГДДВДДВДДВДДВДДВДДДДДВДД†ДДДДДВДДВДДДДДВДДДДДДДД†ДДДДДДДДДД \ \ ¦
      (1)¦ 1¦ 1¦ 0¦ 1¦ 1¦ OP-A¦ 1¦ aa  ¦ 1¦ OP-B¦  mmm   ¦Смещение   / / ¦
         ГДД†ДД†ДД†ДД†ДД†ДДДДД†ДД†ДДДДД†ДДБДДДДД†ДДДДДДДД†ДДДДДДДДД  \ \ ¦
      (2)¦ 1¦ 1¦ 0¦ 1¦ 1¦ **  ¦ *¦ aa  ¦  OP-B  ¦  mmm   ¦Смещение   / / ¦
         ГДД†ДД†ДД†ДД†ДД†ДДВДД†ДД†ДДВДД†ДДДДДДДД†ДДДДДДДД†ДДДДДДДДДД \ \ДЩ
      (3)¦ 1¦ 1¦ 0¦ 1¦ 1¦ R¦ P¦ *¦ 1¦ 1¦  OP-B  ¦   m    ¦
         ГДД†ДД†ДД†ДД†ДД†ДДВДД†ДД†ДДВДД†ДДВДДДДДБДДДДДДДДґ
Предыдущая страница Следующая страница
1 ... 137 138 139 140 141 142 143  144 145 146 147 148 149 150 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама