Указатели команд и данных позволяют работать с программируемыми обработчиками исключений. Эти регистры доступны через ESC-команды FLDENV, FSTENV, FSAVE и FRSTOR. Всегда, когда процессор i486 раскодирует ESC-команду, он сохраняет адрес команды, адрес операнда (если есть) и код операции.
При сохранении в памяти, указатели команд и данных находятся в одном из четырех форматов, в зависимости от режима работы процессора (защищенный режим или режим абсолютной адресации) и в зависимости от атрибута размера операнда (32 или 16 битовый операнд). В режиме виртуального процессора 8086 используются форматы режима абсолютной адресации.
На всех иллюстрациях от Рисунка 15-5 до Рисунка 15-8 эти указатели показаны так, как они сохраняются после команды FSTENV.
+---------------------------------------------------------------+| ФОРМАТ 32-БИТНОГО ЗАЩИЩЕННОГО РЕЖИМА || || 31 23 15 7 0 || +-----------+-----------------------+-----------+ || | ЗАРЕЗЕРВИРОВАНО | УПРАВЛЯЮЩЕЕ СЛОВО | 0H || +-----------+-----------|-----------+-----------| || | ЗАРЕЗЕРВИРОВАНО | СЛОВО СОСТОЯНИЯ | 4H || +-----------+-----------|-----------+-----------| || | ЗАРЕЗЕРВИРОВАНО | СЛОВО ПРИЗНАКА | 8H || +-----------+-----------|-----------+-----------| || | СМЕЩЕНИЕ IP (указателя команд) | CH || +-----------+-----------|-----------+-----------| || | ЗАРЕЗЕРВИРОВАНО | СЕЛЕКТОР CS | 10H || +-----------+-----------|-----------+-----------| || | СМЕЩЕНИЕ ОПЕРАНДА ДАННЫХ | 14H || +-----------+-----------|-----------+-----------| || | ЗАРЕЗЕРВИРОВАНО | СЕЛЕКТОР ОПЕРАНДА | 18H || +-----------+-----------------------+-----------+ || |+---------------------------------------------------------------+Рисунок 15-5. Числовые Коианды Защищенного Режима и Отображение Указателя Данных в Памяти, 32-х битный формат +---------------------------------------------------------------+| || ФОРМАТ 32-БИТНОГО РЕЖИМА АБСОЛЮТНОЙ АДРЕСАЦИИ || || 31 23 15 7 0 || +-----------+-----------------------+-----------------+ || | ЗАРЕЗЕРВИРОВАНО | УПРАВЛЯЮЩЕЕ СЛОВО | 0H || +-----------+-----------|-----------+-----------------| || | ЗАРЕЗЕРВИРОВАНО | СЛОВО СОСТОЯНИЯ | 4H || +-----------+-----------|-----------+-----------------| || | ЗАРЕЗЕРВИРОВАНО | СЛОВО ПРИЗНАКА | 8H || +-----------+-----------|-----------+-----------------| || | ЗАРЕЗЕРВИРОВАНО | УКАЗАТЕЛЬ КОМАНДЫ 15..0 | CH || +-----------+-----------------------+-----------------| || |0000|УКАЗАТЕЛЬ КОМАНДЫ 31..16|0|КОД ОПЕРАЦИИ 10.0| 10H || +-----------+-----------|-----------+-----------------| || | ЗАРЕЗЕРВИРОВАНО | УКАЗАТЕЛЬ ОПЕРАНДА 15..0 | 14H || +-----------+-----------|-----------+-----------------| || |0000| УКАЗАТЕЛЬ ОПЕРАНДА 31..16 | 000000000000 | 18H || +-----------+-----------------------+-----------------+ || |+---------------------------------------------------------------+ Рисунок 15-6. Числовые Команды Режима Абсолютной Адресации и Отображение Указателя Данных в Памяти, 32-разрядный формат +---------------------------------------------------------------+| ФОРМАТ 16-БИТНОГО ЗАЩИЩЕННОГО РЕЖИМА || || 15 7 0 || +---------------+---------------+ || | УПРАВЛЯЮЩЕЕ СЛОВО | 0H || +---------------+---------------| || | СЛОВО СОСТОЯНИЯ | 2H || +---------------+---------------| || | СЛОВО ПРИЗНАКА | 4H || +---------------+---------------| || | СМЕЩЕНИЕ IP(указателя команды)| 6H || +---------------+---------------| || | СЕЛЕКТОР CS | 8H || +---------------+---------------| || | СМЕЩЕНИЕ ОПЕРАНДА | AH || +---------------+---------------| || | СЕЛЕКТОР ОПЕРАНДА | CH || +---------------+---------------+ || |+---------------------------------------------------------------+Рисунок 15-7. Числовые Команды Защищенного Режима и Отображение Указателя Данных в Памяти, 16-ти битовый формат
Команды FSTENV и FSAVE хранят эти данные в памяти, позволяя обработчикам исключений определять тид любого исключения, которое может встретиться. Адрес команды указывает на любые префиксы, которые предшествуют команде, как и в математических сопроцессорах 387 и 80287. Здесь есть отличие от сопроцессора 8087, для которого адрес команд указывает только на код ESC-команды.
+---------------------------------------------------------------+| || ФОРМАТ 16-БИТНОГО РЕЖИМА АБСОЛЮТНОЙ АДРЕСАЦИИ || И ФОРМАТ РЕЖИМА ВИРТУАЛЬНОГО ПРОЦЕССОРА 8086 || || 15 7 0 || +---------------+---------------+ || | УПРАВЛЯЮЩЕЕ СЛОВО | 0H || +---------------+---------------| || | СЛОВО СОСТОЯНИЯ | 2H || +---------------+---------------| || | СЛОВО ПРИЗНАКА | 4H || +---------------+---------------| || | УКАЗАТЕЛЬ КОМАНДЫ 15..0 | 6H || +---------------+---------------| || |УКАЗАТЕЛЬ | | | || | КОМАНД |0|КОД ОПЕРАЦИИ 10..0| 8H || | 19..16 | | | || +---------------+---------------| || | УКАЗАТЕЛЬ ОПЕРАНДА 15..0 | AH || +---------------+---------------| || |УКАЗАТЕЛЬ | | | || | ДАННЫХ |0| 00000000000 | CH || | 19..16 | | | || +---------------+---------------+ || || |+---------------------------------------------------------------+Рисунок 15-8. Числовые Командыи Режима Абсолютной Адресации и Отображение Указателя Данных в Памяти, 16-битовый формат
Обратите внимание, что команды управления процессором FINIT, FLDCW, FSTCW, FSTSW, FCLEX, FSTENV, FLDENV, FSAVE и FRSTOR не действуют на указатель данных. Обратите также внимание на то, что значение указателя данных неопределено, если предыдущая ESC- команда не имела операнда памяти. Единственное исключение составляют только что упомянутые команды.