МОВАПД
На языке программирования ассемблера x86 MOVAPD — это название конкретного действия, выполняемого современными процессорами x86 с потоковыми расширениями SIMD 2-го поколения (SSE2) . Это действие включает копирование пары чисел во временное пространство процессора для использования в других вычислениях. MOVAPD — один из самых быстрых способов добиться этого эффекта — он быстрее, чем аналогичная инструкция MOVSD.
с выравниванием по 16 байт упакованных двойных данных В частности, MOVAPD вызывает копирование источника в регистр 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 байтам. [ 1 ]
Ссылки
[ редактировать ]- gcc информационная документация
- Справочное руководство по оптимизации архитектур Intel 64 и IA-32 , ноябрь 2006 г.
- Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 2A: Справочник по набору инструкций, AM , ноябрь 2006 г.