logo

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

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

MASKMOVQ

Переслать 64-битные данные из MMX-регистра с маскированием

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

I

D

Z

O

U

P

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

0F F7 /r

MASKMOVQ mm1,mm2

Копировать упакованные байты из mm1 в память по адресу DS:(E)DX согласно установок знаковых битов в соответствующих упакованных байтах mm2

Pentium III

maskmovq mm2,mm6

Описание:

Команда MASKMOVQ пересылает данные из MMX-регистра (левый операнд) в операнд в памяти, адресуемый регистрами DS:(E)DX, используя содержимое второго MMX-регистра (правый операнд) для разрешения пересылки отдельных байтов пересылаемых данных. А именно: каждый байт исходного операнда либо копируется в аналогичное поле операнда-назначения, когда в соответствующем байте регистра маски установлен самый старший бит, либо не копируется, когда этот бит сброшен.

Если все управляющие биты маски сброшены, то для данной команды не будут срабатывать некоторые условия генерации особых ситуаций, а также не будут соблюдаться некоторые правила работы:

  • #GP и #SS не будут генерироваться для некорректных ссылок в память;
  • #PG не будет генерироватьсяв некоторых процессорах;
  • переключение состояния FPU в MMX-режим будет происходить также, как и для всех MMX-команд;
  • могут не срабатывать некоторые ловушки отладки по коду и по данным;
  • #UD, #NM, #MF и #AC генерируются обычным образом.

Поле mod байта ModR/M кода команды должно быть установлено в 11b, иначе будет генерироваться ошибка #UD.

Операция:

IF (SRC[7] = 1) THEN

  m64[EDI] = DEST[7-0];

ELSE

  M64[EDI] = 0h;

FI;

IF (SRC[15] = 1) THEN

  m64[EDI] = DEST[15-8];

ELSE

  M64[EDI] = 0h;

FI;

IF (SRC[23] = 1) THEN

  m64[EDI] = DEST[23-16];

ELSE

  M64[EDI] = 0h;

FI;

IF (SRC[31] = 1) THEN

  m64[EDI] = DEST[31-24];

ELSE

  M64[EDI] = 0h;

FI;

IF (SRC[39] = 1) THEN

  m64[EDI] = DEST[39-32];

ELSE

  M64[EDI] = 0h;

FI;

IF (SRC[47] = 1) THEN

  m64[EDI] = DEST[47-40];

ELSE

  M64[EDI] = 0h;

FI;

IF (SRC[55] = 1) THEN

  m64[EDI] = DEST[55-48];

ELSE

  M64[EDI] = 0X0;

FI;

IF (SRC[63] = 1) THEN

  m64[EDI] = DEST[63-56];

ELSE

  M64[EDI] = 0h;

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       Сервер радиолюбителей России - схемы, документация,

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