MOVAPD - MOVAPD

В x86 ассемблере языка , MOVAPD этого имя для performable конкретных действий современных х86 процессоров с вторым поколением Streaming SIMD Extensions (SSE2) . Это действие включает в себя копирование пары чисел во временное пространство процессора для использования в других вычислениях. MOVAPD - один из самых быстрых способов добиться этого эффекта - он быстрее, чем сопоставимая инструкция MOVSD.

В частности, MOVAPD вызывает копирование выровненного по 16 байт источника упакованных двойников в регистр XMM или в 16-байтовую область памяти.

Применение

Код операции Сборка (синтаксис Intel) Сборка (синтаксис AT&T) Внутренний эквивалент ICC встроенный (-ые) gcc
66 0F 28 /r MOVAPD xmm1, xmm2/m128 MOVAPD xmm2/m128, xmm1 __m128 _mm_load_pd(double* p)
66 0F 29 /r MOVAPD xmm1/m128, xmm2 MOVAPD xmm2, xmm1/m128 void _mm_store_pd(double* p, __m128 a)

Исходный операнд может быть регистром XMM ( xmm2 ) или адресом памяти ( m128 ).

Операнд-адресат может быть регистром XMM ( xmm1 ) или адресом памяти ( m128 ). Обратите внимание, однако, что операнды источника и назначения не могут быть одновременно адресами памяти.

Возможные исключения

Если операнд адреса памяти не выровнен по 16 байтам, будет сгенерировано общее исключение защиты (#GP). Это может вызвать странные ошибки взаимодействия, когда обычный код вызывает внешний код, который был скомпилирован с предположением о 16-байтовой границе кадра стека.

Рекомендации

  • документация gcc info
  • Справочное руководство по оптимизации архитектур Intel 64 и IA-32 , ноябрь 2006 г.
  • Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 2A: Справочник по набору инструкций, AM , ноябрь 2006 г.


Смотрите также


списки инструкций x86