Скачиваний:
57
Добавлен:
16.04.2013
Размер:
349.18 Кб
Скачать

5.3.6. Инструкции целочисленного умножения и сложения

Целочисленное (с фиксированной точкой) умножение выполняется в устройстве с плавающей точкой, при использовании инструкции xmaс тремя операндами. Операнды и результат этих инструкций являются регистрами с плавающей точкой. Инструкцииxmaигнорируют поля знака и порядка в регистре с плавающей точкой, за исключением проверки значенияNaTVal. Произведение двух 64-битных мантисс складывается с третьей 64-битной мантиссой (расширенной нулями) для получения 128 битного результата. Старшая (high) и младшая (low) версии инструкции, выбирают соответственно младшие или старшие 64-бита из 128-битного результата и записывают полученное значение в приемный регистр, как обычное целое. Версии инструкции со знаком или без знака оперируют с 64-битными целыми сомножителями, как со знаковыми или беззнаковыми, соответственно.

Табл. 5.17. Инструкции целочисленного умножения и сложения

Целочисленное сложение и умножение

Младшее

Старшее

Со знаком

xma.l

xma.h

Без знака

xma.lu (псевдооперация)

xma.hu

5.4. Дополнительные обсуждения в связи с ieee

Этот раздел описывает поддержку стандартов IEEEв областях, где определенные детали оставлены открытыми.

5.4.1. Прерывания с плавающей точкой

Прерывания с плавающей точкой являются точными. Сообщение и обработка исключения происходят на инструкции, которая вызвала прерывание. Имеется три прерывания с плавающей точкой: ошибка «Недоступный регистр с плавающей точкой», ошибка «Исключение с плавающей точкой», ловушка «Исключение с плавающей точкой» (детальнее, см. главу 5 «Прерывания» во втором томе).

Исключения обрабатываются согласно предопределенному правилу очередности. Правило очередности обработки исключений состоит в том, что исключение с более высоким приоритетном отмечается флагом в первую очередь, и результаты вырабатываются согласно требованиям этого исключения. Исключение с более низким приоритетом не отмечается флагом, даже если оно происходит. Например, деление SNaNна ноль вызовет исключение «Неверная операция» (из-заSNaN), а не исключение «Деление на ноль». Результатом запрета исключения будет неопределенностьQNaN, а не бесконечность. Однако,IEEEисключение-ловушка «Потеря точности с плавающей точкой» может сопровождать исключения-ловушки «Переполнение или Антипереполнение с плавающей точкой».

Для инструкций, которые обращаются к файлу регистров с плавающей точкой, наивысший приоритет имеет ошибка «Недоступный регистр с плавающей точкой».

5.4.1.1. Ошибка: Недоступный регистр с плавающей точкой

В регистре PSR, два бита –PSR.dflиPSR.dfh(см. раздел 3.3.2 «Регистр состояния процессора (PSR) во втором томе) могут быть использованы операционной системой для разрешения или запрещения доступа к двум подмножествам регистров с плавающей точкой: отFR2 доFR31 и отFR32 доFR127 соответственно. Ошибка «Недоступный регистр с плавающей точкой» случается, когда обращение (чтение или запись) делается дляFR, доступ к которому запрещен. Операционная система может использовать эту ошибку для идентификации задачи как целочисленной или с плавающей запятой и оптимизировать, заданный по умолчанию набор регистров, которые сохраняются при переключении задач. Если целочисленная задача, главным образом, способна использовать для операций целочисленного умножения и деления, только регистры отFR2 доFR31, то время переключения контекста может быть уменьшено отключением доступа к старшим регистрам с плавающей точкой.