Внутренние регистры: Регистр управления FPU |
Программирование - Архитектура и система команд микропроцессоров x86 | |||
Регистр управления CW (рис. 1.14.) предназначен для управления режимами работы сопроцессора. Он содержит ряд полей, значения которых влияют на точность результата, поведение процессора при встрече некорректных операндов и результатов и т.п.
Рис. 1.14. Формат регистра управления FPU
IC (Управление бесконечностью, бит 12: Intel287, 8087) В сопроцессорах Intel287 и 8087 данный бит определяет, что +∞ и -∞ считаются одной беззнаковой бесконечностью (IC = 0) — проективная арифметика; или что +∞ и -∞ считаются двумя знаковыми бесконечностями (IC = 1) — аффинная арифметика. В более поздних сопроцессорах, поддерживающих стандарт IEEE-754 (Intel387, Intel486, Pentium, …), данный бит, хотя и может программироваться, но не влияет на работу FPU — независимо от значения IC всегда применяется аффинная арифметика (-∞ < +∞).
RC (Управление округлением, биты 11, 10) Поле RC определяет выбор одного из четырех методов округления результатов операций FPU:
PC (Управление точностью, биты 9, 8) Указывает точность представления результатов арифметических операций FADD, FADDP, FSUB, FSUBP, FSUBR, FSUBRP, FMUL, FMULP, FDIV, FDIVP, FDIVR, FDIVRP и FSQRT. Доступны следующие режимы представления:
На другие команды эти биты влияния не оказывают. Уменьшение точности может быть полезно для совместимости с ранними моделями арифметических сопроцессоров.
IEM (Запрет прерываний, бит 7: только для 8087) В сопроцессоре 8087 этот бит маскирует флаг запроса прерывания IR, то есть, независимо от значений шести масок исключений, сигнал IEM = 1 запрещает генерацию прерываний при возникновении ошибок сопроцессора. Во всех современных микропроцессорах (Intel287, Intel387, Intel486, …) бит 7 регистра CW зарезервирован.
PM, UM, OM, ZM, DM, IM (Маски исключений, биты 5, 4, 3, 2, 1, 0) Биты содержат индивидуальные маски для каждой из шести исключительных ситуаций сопроцессора. Установка бита маски запрещает прерывание при возникновении соответствующей ошибки FPU (см. Исключения FPU). Каждому исключению соответствует свой бит маски:
При возникновении исключения, когда соответствующий бит маски сброшен, устанавливается соответствующий флаг в регистре состояния FPU и выдается сигнал прерывания, сообщающий процессору об ошибке сопроцессора. В случае, когда бит маски исключения установлен, внешний сигнал не выдается, но флаг все равно устанавливается. Таким образом, используя эффект накопления ошибок, программное обеспечение может замаскировать все исключения до выполнения групповых вычислений, затем произвести вычисления и проверить содержимое всех флагов для выяснения того, какие исключения имели место.
|
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru