logo

Главная Система команд x86 Набор команд SIMD PAVGB

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

PAVGB

Усреднить беззнаковые упакованные байты

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

I

D

Z

O

U

P

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

0F E0 /r

PAVGB mm1,mm2/m64

Найти средние для упакованных беззнаковых байтов из mm1, mm2/m64 и поместить в mm1

Pentium III

pavgb mm2,mm3

0F E3 /r

PAVGW mm1,xmm2/m64

Найти средние для упакованных беззнаковых слов из mm1, mm2/m64 и поместить в mm1

Pentium III

pavgw mm4,[ebx]

Описание:

Команда PAVG прибавляет беззнаковые целые элементы, упакованные в операнде-источнике, к соответствующим элементам операнда-назначения. Причем формирование итоговых значений происходит следующим образом: полное значение суммы с переносом сдвигается на одну позицию вправо, при этом перенос попадает в старший бит сохраняемого значения, а его младший бит выдвигается и теряется (например, 255 + 255 = 255, 254 + 255 = 255, 253 + 255 = 254, 2 + 3 = 5).

Возможно сложение упакованных беззнаковых байтов (PAVGB) и слов (PAVGW). Операндом-источником команды могут быть MMX-регистры и операнды в памяти, а операндом-назначением только MMX-регистры.

Операция:

IF (Команда PAVGB) THEN

  X[0] = DEST[7-0];

  Y[0] = SRC/m64[7-0];

  X[1] = DEST[15-8];

  Y[1] = SRC/m64[15-8];

  X[2] = DEST[23-16];

  Y[2] = SRC/m64[23-16];

  X[3] = DEST[31-24];

  Y[3] = SRC/m64[31-24];

  X[4] = DEST[39-32];

  Y[4] = SRC/m64[39-32];

  X[5] = DEST[47-40];

  Y[5] = SRC/m64[47-40];

  X[6] = DEST[55-48];

  Y[6] = SRC/m64[55-48];

  X[7] = DEST[63-56];

  Y[7] = SRC/m64[63-56];

  DO WHILE (I < 8)

     TEMP[I] = ZERO_EXT(X[I], 8) + ZERO_EXT{Y[I], 8);

     RES[I] = (TEMP[I] + 1) >> 1;

  OD;

  DEST[7-0] = RES[0];

  DEST[15-8] = RES[1];

  DEST[23-16] = RES[2];

  DEST[31-24] = RES[3];

  DEST[39-32] = RES[4];

  DEST[47-40] = RES[5];

  DEST[55-48] = RES[6];

  DEST[63-56] = RES[7];

ELSE (* Команда PAVGW *)

  X[0] = DEST[15-0];

  Y[0] = SRC/m64[15-0];

  X[1] = DEST[31-16];

  Y[1] = SRC/m64[31-16];

  X[2] = DEST[47-32];

  Y[2] = SRC/m64[47-32];

  X[3] = DEST[63-48];

  Y[3] = SRC/m64[63-48];

  DO WHILE (I < 4)

     TEMP[I] = ZERO_EXT(X[I], 16) + ZERO_EXT{Y[I], 16);

     RES[I] = (TEMP[I] + 1) >> 1;

  OD;

  DEST[15-0] = RES[0];

  DEST[31-16] = RES[1];

  DEST[47-32] = RES[2];

  DEST[63-48] = RES[3];

FI;

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

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

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

#GP, если любая часть операнда находится вне пространства эффективных адресов от 0 до 0FFFFh.
#NM, если CR0.TS = 1.
#UD, если CR0.EM = 1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.

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

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC при невыровненных обращениях к памяти (когда CR0.AM = 1 и EFLAGS.AC = 1).


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




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

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

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