logo

Главная Система команд x86 Набор команд 3DNow! PMULHRW

Система команд 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

PMULHRW

Умножить знаковые упакованные слова, округлить и выбрать старшие биты результата

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код/Суфф.

Команда

Описание

Пример

0F 0F / B7

PMULHRW mm,mm/m64

Перемножить  упакованные целые со знаком из mm и из mm/m64, результат округлить к ближайшему и его старшие 16 бит поместить в mm

pmulhrw mm2,[esi]

Описание:

Команда PMULHRW производит перемножение четырех знаковых 16-битных целых значений из операнда-источника и соответствующих целых знаковых элементов операнда-назначения. Затем к младшим 16 битам 32-битных результатов добавляется 0x8000h, что приводит к округлению (к ближайшему) старших 16 бит результата (включая знаковый бит), которые записываются в операнд-назначение, занимая соответствующие слова в упакованном целочисленном формате.

Операндом-назначением является MMX-регистр. Операндом-источником может быть как MMX-регистр, так и операнд в памяти.

Команда PMULHRW обеспечивает более точный результат, чем команда PMULMH, которая обрезает 32-битное значение, полученное после умножения, вместо округления.

Для примера, для исходных значений операндов 0xD2505321_7007FFFFh и 0x8807EC22_7FFEFFFFh после выполнения команды PMULHRW будет получено значение 0x1569F98C_38030000h.

Операция:

temp1 <- dest[15:0] * src[15:0];

temp2 <- dest[31:16] * src[31:16];

temp3 <- dest[47:32] * src[47:32];

temp4 <- dest[63:48] * src[63:48];

dest[15:0] <- temp1[31:16];

dest[31:16] <- temp2[31:16];

dest[47:32] <- temp3[31:16];

dest[63:48] <- temp4[31:16];

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

#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

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

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.

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

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.


Входит в группу команд: Набор команд 3DNow!




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

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

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