logo

Главная Система команд x86 Система команд FPU FPREM

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

FPREM

Найти частичный остаток деления

Влияние команды на флаги и форматы команды:

IS

IA

D

Z

O

U

P

*

*

*

 

 

*

 

 

Код

Команда

Описание

Проц.

Пример

D9 F8

FPREM

ST(0) = остаток от деления ST(0) на ST(1)

8087

fprem

Описание:

Команда FPREM вычисляет остаток, получаемый от деления ST на ST(1), и помещает результат в ST. Знак остатка такой же, как и знак исходного делимого в ST.

FPREM всегда возвращает точный результат; исключения никогда #P не происходит, управление округлением не влияет на результат.

FPREM работает методом итерационного вычитания и может уменьшить показатель степени ST не более чем на 63 за одно свое выполнение. Если в процессе выполнения FPREM получается остаток меньший чем входное значение в ST(1), то функция считается выполненной и флаг C2 очищается. В противном случае, флаг C2 устанавливается, а результат в ST называется неполным остатком. Показатель степени неполного остатка меньше, чем показатель степени исходного делимого, по крайней мере на 32. Программа может перезапускать команду (используя неполный остаток в ST как делимое), пока флаг C2 не будет очищен.

В таблице 6.169. приведены значения, возвращаемые командой FPREM для различных классов операндов.

Таблица 6.169. Значения, возвращаемые командой FPREM для различных классов операндов

SRCDEST

-INF

-F

-0

+0

+F

+INF

NaN

-INF

#IA

#IA

#IA

#IA

#IA

#IA

NaN

-F

ST(0)

-F или -0

#Z

#Z

-F или -0

ST(0)

NaN

-0

-0

-0

#IA

#IA

-0

-0

NaN

+0

+0

+0

#IA

#IA

+0

+0

NaN

+F

ST(0)

+F или +0

#Z

#Z

+F или +0

ST(0)

NaN

+INF

#IA

#IA

#IA

#IA

#IA

#IA

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

               

F - Конечное вещественное значение

       

 

Исключение #IA также возникает, если любой из операндов SNaN или представлен в неподдерживаемом формате.

Важный случай использования команды FPREM — это уменьшение аргументов периодических функций. Когда уменьшение выполнено, три наименее значащих бита частного сохраняются во флагах C3, C1, C0 регистра SW. Флаг C1 также устанавливается равным 0 в случае возникновения стековой ошибки #IS.

Операция:

EXPDIF = exponent(ST) - exponent(ST(1));

IF EXPDIF < 64

THEN

  Q = Целое, получаемое округлением ST / ST(1) в сторону нуля;

  ST = ST - (ST(1) * Q);

  C2 = 0;

  C0, C1, C3 = Три младших бита Q; (* Q2, Q1, Q0 *)

ELSE

  C2 = 1;

  N = Число между 32 и 63;

  QQ = Целое, получаемое округлением (ST / ST(1)) / 2EXPDIF-N в сторону нуля;

  ST = ST - (ST(1) * QQ * 2EXPDIF-N;

FI;

Особые ситуации защищенного режима:

#NM, если CR0.EM = 1 или CR0.TS = 1.

Особые ситуации режима реальной адресации:

#NM, если CR0.EM = 1 или CR0.TS = 1.

Особые ситуации режима V86:

#NM, если CR0.EM = 1 или CR0.TS = 1.

Замечание:

Команда FPREM не является операцией вычисления остатка по стандарту IEEE-754. Необходимо использовать команду FPREM1 для нахождения такого рода остатка. FPREM поддерживается для совместимости с математическими сопроцессорами 8087, 80287.

На процессорах, поддерживающих стандарт IEEE-754 (Intel387, Intel486, …) операция над денормализованными операндами может привести к исключению #U. На математических сопроцессорах Intel287 и 8087, не отвечающих стандарту IEEE-754, возникновение #U в этом случае невозможно, операция над денормализованными операндами приводит к исключению #IA. Изменение обработчика исключения #U может потребоваться, только если необходимо по разному обрабатывать различные коды операций.

Биты C3, C1, C0 в слове состояния в процессорах Intel387, Intel486,… корректно отражают три младших бита частного. В сопроцессорах Intel287 и 8087 биты частного некорректны, когда выполняется понижение аргументов, равных 64N+M, где N³1 и M=1 или M=2.


Входит в группу команд: Система команд FPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники