Регистр управления cwr
Регистр управления работой сопроцессора определяет особенности обработки численных данных (рис. 19.4). Он состоит из:
– шести масок исключений;
– поля управления точностью рс (Precision Control);
– поля управления округлением rс (Roimding Control).
Шесть масок предназначены для маскирования исключительных ситуаций, возникновение которых фиксируется с помощью шести бит регистра swr. Если какие-то биты исключений в регистре cwr установлены в единицу, то это означает, что соответствующие исключения будут обрабатываться самим сопроцессором. Если для какого-либо исключения в соответствующем бите масок исключений регистра cwr содержится нулевое значение, то при возникновении исключения этого типа будет возбуждено прерывание 16 (10h). Операционная система должна содержать (или программист должен написать) обработчик этого прерывания. Он должен выяснить причину прерывания, после чего, если это необходимо, исправить ее, а также выполнить другие действия.
Поле управления точностью рс предназначено для выбора длины мантиссы. Возможные значения в этом поле означают:
– рс= 00 — длина мантиссы 24 бита;
– рс=10 — длина мантиссы 53 бита;
– рс=11 — длина мантиссы 64 бита.
По умолчанию устанавливается значение поля рс=11.
Поле управления округлением rc позволяет управлять процессом округления чисел в процессе работы сопроцессора. Необходимость операции округления может появиться в ситуации, когда после выполнения очередной команды сопроцессора получается не представимый результат, например, периодическая дробь 3,333... Установив одно из значений в поле rc, можно выполнить округление в необходимую сторону. Для того чтобы выяснить характер округления, введем обозначения:
– m — значение в st(0) или результат работы некоторой команды, который не может быть точно представлен и поэтому должен быть округлен;
– а и b — наиболее близкие значения к значению m, которые могут быть представлены в регистре st(0) сопроцессора, причем выполняется условие a<m<b.
Ниже приведены значения поля rc и описан соответствующий им характер округления:
– 00 — значение m округляется к ближайшему числу а или b;
– 01 — значение m округляется в меньшую сторону, то есть m=а;
– 10 — значение m округляется в большую сторону, то есть m=b;
– 11 — производится отбрасывание дробной части m. Используется для приведения значения к форме, которая может использоваться в операциях целочисленной арифметики.
Регистр тегов twr
Регистр тегов twr представляет собой совокупность двухбитовых полей. Каждое двухбитовое поле соответствует определенному физическому регистру стека и характеризует его текущее состояние. Изменение состояния любого регистра стека отражается на содержимом соответствующего этому регистру поля регистра тега. Возможны следующие значения в полях регистра тега:
– 00 — регистр стека сопроцессора занят допустимым ненулевым значением;
– 01 — регистр стека сопроцессора содержит нулевое значение;
– 10 — регистр стека сопроцессора содержит одно из специальных численных значений, за исключением нуля;
– 11 — регистр пуст и в него можно производить запись. Это значение в одном из двухбитовых полей регистра тегов не означает, что все биты соответствующего регистра стека должны быть обязательно нулевыми.
Мы не раз уже отмечали, что при написании программы разработчик манипулирует не абсолютными, а относительными номерами регистров стека. По этой причине у него могут возникнуть трудности при попытке интерпретации содержимого регистра тегов twr. с соответствующими физическими регистрами стека. В качестве связующего звена необходимо привлекать информацию из поля top регистра swr.
Дата добавления: 2015-04-15; просмотров: 1461;