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 г.