logo

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

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

MOVAPS

Переслать выровненные упакованные короткие вещественные значения

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

I

D

Z

O

U

P

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

0F 28 /r

MOVAPS xmm1,xmm2/m128

xmm1 = xmm2/m128

Pentium III

movaps xmm2,xmm3

0F 29 /r

MOVAPS xmm2/m128,xmm

xmm2/m128 = xmm1

Pentium III

movaps [ebx],xmm4

Описание:

Команда MOVAPS служит для пересылки 128-битных данных между SIMD-регистрами общего назначения или между SIMD-регистром и памятью. Данные располагаются в памяти так, что младший байт 128-битного значения располагается по эффективному адресу, задаваемому командой. При обращении к памяти данные пересылаются порциями по 16-бит.

Использование команды MOVAPS возможно только с данными в памяти выровненными по 16-битным границам. Такое выравнивание рекомендуется для всех SIMD-данных, поскольку работа процессора оптимизируется именно под него. Для пересылки невыровненных операндов может использоваться команда MOVUPS.

Использование префикса REP/REPNE (0xF3h / 0xF2h) и префикса размера операнда (0x66h) с командой MOVAPS является зарезервированной недокументированной функцией. Различные модели процессоров по разному реагируют на эту ситуацию. Не рекомендуется применять в программах комбинацию команды MOVAPS и указанных префиксов, т.к. в дальнейших моделях процессоров эта функция может быть изменена или исключена.

Операция:

IF (destination = DEST) THEN

  IF (SRC = m128)THEN (* Команда загрузки *)

     DEST[127-0] = m128;

  ELSE(* Команда переноса *)

     DEST[127=0] = SRC[127-0];

  FI;

ELSE

  IF (destination = m128)THEN (* Команда сохранения *)

     m128 = SRC[127-0];

  ELSE(* Команда переноса *)

     DEST[127-0] = SRC[127-0];

  FI;

FI;

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

#GP(0) при некорретном эффективном адресе операнда в памяти в сегментах CS, DS, ES, FS или GS, и для всех сегментов если операнд в памяти не выровнен по 16-байтным границам.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#NM, если CR0.TS = 1.
#UD, если CR0.EM = 1 или CR4.OSFXSR = 0, а также при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 0.
#XM при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 1.

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

#GP, если любая часть операнда находится вне пространства эффективных адресов от 0 до 0FFFFh.
#NM, если CR0.TS = 1.
#UD, если CR0.EM = 1 или CR4.OSFXSR = 0, а также при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 0.
#XM при встрече незамаскированных SIMD-исключений, когда CR4.OSXMMEXCPT = 1.

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

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


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




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

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

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