Приложение F. Краткое описание числовых исключений
В следующей таблице приводится список мнемонических обозначений команд в алфавитном порядке. Для каждого мнемонического обозначения приводится список исключений, которые может порождать эта команда. Если вы пишете программы численных вычислений, которые могут эксплуатироваться на оборудовании, включающем в себя средства обработки исключений, то программисты на ассемблере должны знать все возможные исключения для каждой команды для того, чтобы определить потребность в синхронизации исключений. Глава 18 объясняет потребности синхронизации исключений.
+-----------------------------------------------------------------+| Мнемоническое | Команда | IS | I | D | Z | O | U | P || обозначение | | | | | | | | |+-----------------+------------------+----+---+---+---+---+---+---|| F2XM1 | 2**X - 1 | Y | Y | Y | | | Y | Y || FABS | Абсолютное значе-| Y | | | | | | || | ние | | | | | | | || FADD(P) | Сложение вещест- | Y | Y | Y | | Y | Y | Y || | венных | | | | | | | || FBLD | Загрузить BCD | Y | | | | | | || FBSTR | Сохранить и вос- | Y | Y | | | | | Y || | становить из сте-| | | | | | | || | ка BCD | | | | | | | || FCHS | Изменить знак | Y | | | | | | || FCLEX | Очистить все ис- | | | | | | | || | ключения | | | | | | | || FCOM(P)(P) | Сравнение вещест-| Y | Y | Y | | | | || | венных | | | | | | | || FCOS | Косинус | Y | Y | Y | | | Y | Y || FDECSTP | Уменьшить значе- | | | | | | | || | ние указателя | | | | | | | || | стека | | | | | | | || FDIV(R)(P) |Деление веществен-| Y | Y | Y | Y | Y | Y | Y || | ных | | | | | | | || FFREE |Освободить регистр| | | | | | | || FIADD | Целое сложение | Y | Y | Y | | Y | Y | Y || FICOM(P) | Сравнение целых | Y | Y | Y | | | | || FIDIV | Деление целых | Y | Y | Y | Y | | Y | Y || FIDIVR | Обратное деление | Y | Y | Y | Y | Y | Y | Y || | целых | | | | | | | || FILD | Загрузка целого | Y | | | | | | || FIMUL | Умножение целых | Y | Y | Y | | Y | Y | Y || FINCSTP |Увеличить значение| | | | | | | || | указателя стека | | | | | | | || FINIT | Инициализация | | | | | | | || | процессора | | | | | | | || FIST(P) | Запомнить целое | Y | Y | | | | | Y || FISUB(R) | Вычитание целых | Y | Y | Y | | Y | Y | Y || FLD расширенное | Загрузить ве- | Y | | | | | | || или стековое | щественное | | | | | | | || FLD одиночное | Загрузить ве- | Y | Y | Y | | | | || или двойное | щественное | | | | | | | || FLD1 | Загрузить и сло- | Y | | | | | | || | жить с 1.0 | | | | | | | || FLDCW | Загрузить управ- | Y | Y | Y | Y | Y | Y | Y || | ляющее слово | | | | | | | || FLDENV | Загрузить среду | Y | Y | Y | Y | Y | Y | Y || FLDL2E | Загрузить log2(e)| Y | | | | | | || FLDL2T |Загрузить log2(10)| Y | | | | | | || FLDLG2 |Загрузить log10(2)| Y | | | | | | || FLDLN2 |Загрузить loge(2) | Y | | | | | | || FLDPI |Загрузить число ПИ| Y | | | | | | || FLDZ | Загрузить и сло- | Y | | | | | | || | жить с 0.0 | | | | | | | || FMUL(P) | Умножение вещест-| Y | Y | Y | | Y | Y | Y || | венных | | | | | | | || FNOP | Нет операции | | | | | | | || FPATAN | Неполный арктан- | Y | Y | Y | | | Y | Y || | генс | | | | | | | || FPREM | Неполный остаток | Y | Y | Y | | | Y | || FPREM1 | Неполный остаток | Y | Y | Y | | | Y | || | в формате IEEE | | | | | | | || FPTAN | Неполный тангенс | Y | Y | Y | | | Y | Y || FRNDINT | Округление до це-| Y | Y | Y | | | | Y || | лого | | | | | | | || FRSTOR | Восстановить сос-| Y | Y | Y | Y | Y | Y | Y || | тояние | | | | | | | || FSAVE | Запомнить состо- | | | | | | | || | яние | | | | | | | || FSCALE | Масштабирование | Y | Y | Y | | Y | Y | Y || FSIN | Синус | Y | Y | Y | | | Y | Y || FSINCOS | Синус и косинус | Y | Y | Y | | | Y | Y || FSQRT | Квадратный корень| Y | Y | Y | | | | Y || FST(P) стековое | Запомнить вещест-| Y | | | | | | || или расширенное | венное | | | | | | | || FST(P) одиночное| Запомнить вещест-| Y | Y | Y | | Y | Y | Y || или двойное | венное | | | | | | | || FSTCW | Запомнить управ- | | | | | | | || | ляющее слово | | | | | | | || FSTENV | Запомнить среду | | | | | | | || FSTSW(AX) | Запомнить слово | | | | | | | || | состояния | | | | | | | || FSUB(R)(P) | Вычитание вещест-| Y | Y | Y | | Y | Y | Y || | венных | | | | | | | || FTST | Тест | Y | Y | Y | | | | || FUCOM(P)(P) | Неупорядоченное | Y | Y | Y | | | | || | сравнение вещест-| | | | | | | || | венных | | | | | | | || FWAIT | Ожидание ЦПУ | | | | | | | || FXAM | Проверить | | | | | | | || FXCH | Поменять содержи-| Y | | | | | | || | мое регистров | | | | | | | || FXTRACT | Выделить | Y | Y | Y | Y | | | || FYL2X | Y*log2(X) | Y | Y | Y | Y | Y | Y | Y || FYL2XP1 | Y*log2(X+1) | Y | Y | Y | | | Y | Y |+-----------------------------------------------------------------+ IS - неверный операнд, вызванный переполнением стека или потерей значащихразрядов.I - неверный операнд, вызванный другими причинами.D - ненормализованный операнд.Z - деление на ноль.O - переполнение.U - потеря значащих разрядов.P - неточный результат (потеря точности).
Приложение G. Оптимизация кода
Процессор i486 совместим по коду и по данным с процессорами 386(TM) DX и SX. Были добавлены всего лишь три команды уровня прикладного программирования, которые полезны в специальных ситуациях. Любая существующая прикладная программа для процессора 8086/8088, 80286 и 386 может быть выполнена на процессоре i486 немедленно, без всякой дополнительной модификации и перекомпиляции. Любой компилятор, который генерирует код для процессоров семейства 386, будет также генерировать код, который будет выполняться на процессоре i486 без какой-либо модификации.
Тем не менее, сушествует несколько способов оптимизации кода, которые сделают выполнение прикладных программ на процессоре i486 более быстрым, при помощи всего лишь минимальных изменений или вообще безо всяких изменений по отношению к их реализации для процессоров 386 DX или SX, за исключением, быть может, различий в размере кода. Эти способы следует применять по отношению к выбору последовательности команд и командам управления для того, чтобы получить преимущества встроенного модуля режима конвейерной обработки процессора i486 и большой кэш-памяти, расположенной на одной микросхеме.