Команды передачи данных.
Включают восемь команд, позволяющих выполнять операции над 128-, 64- и 32-разрядными операндами.
Команды movaps (movups) - пересылка выровненных (невыровненных) по 16-байтовой границе 128-разрядных операндов. В качестве входного операнда могут выступать ХММ-регистр или 128-разрядная ячейка памяти, выходным операндом может служить один из ХММ-регистров. Если адрес ячейки памяти не будет выровнен по 16-байтовой границе, то по команде movaps произойдет исключение общей защиты.
Команда movhps - пересылка невыровненных 64 бит из входного операнда в выходной. Один из операндов обязательно должен быть ХММ-регистром, в качестве второго может выступать 64-разрядная ячейка памяти. Пересылаются только старшие 64 бит входных операндов. Младшие 64 бит обоих операндов не изменяются. Если данные передаются из ХММ-регистра, то пересылке подлежат только старшие 64 бит. Команда не требует выравнивания по 16-байтовой границе адреса ячейки памяти.
Командыmovhlps (movlhps) - пересылка невыровненных 64 бит из входного операнда в выходной. Оба операнда должны находиться в ХММ-регистрах. Пересылаются только старшие (младшие) 64 бит входных операндов. В результате выполнения этой команды изменяются младшие (старшие) 64 бит регистра-приемника. Схема выполнения команд показана на рис. 3.9.
|
|
|
|
|
|
|
|
Рис. 3.9. Выполнение команд пересылок movhlps и movlhps
Команда irovlps - пересылка невыровненных 64 бит из входного операнда в выходной. Один из операндов обязательно должен быть ХММ-регистром, в качестве второго может выступать 64-разрядная ячейка памяти. Пересылаются только младшие 64 бит входных операндов. Старшие 64 бит обоих операндов не изменяются. Если данные передаются из ХММ-регистра, то пересылке подлежат только младшие 64 бит. Команда не требует выравнивания по 16-байтовой границе адреса ячейки памяти.
Команда movmskps - пересылка знакового бита каждого из четырех упакованных чисел входного операнда в младшие четыре бита выходного операнда. В качестве входного операнда может выступать только ХММ-регистр, а в качестве выходного операнда - 32-разрядный регистр общего назначения. Эта команда используется для организации условных переходов.
Команда movss - пересылка 32 младших битов из источника в приемник, при этом один из операндов должен быть ХММ-регистром, а второй - 32-разрядной ячейкой памяти. При выполнении операции пересылки из памяти младшие 32 бита помещаются в младшие 32 разряда ХММ-регистра. Если выполняется пересылка из ХММ-регистра, то выбираются младшие 32 разряда регистра, остальные разряды не изменяются.
Дата добавления: 2018-11-26; просмотров: 610;