Главная страница
Предыдущая страница (как организовано SSE)

Команды пересылки данных


1) movaps приёмник, источник – переслать выравненные упакованные числа. Копирует 128 бит из источника в приёмник. Каждый из аргументов может быть регистром SSE, или 128-битной переменной. Например: movaps XMM1, XMM2; или movaps XMM1, y, где y – переменная. Если адрес переменной некратен 16 байтам, программа вылетает. Предупреждение: во всех командах расширения SSE, кроме movups 16-байтные операнды из памяти должны быть выровнены по 16-байтным границам!

2) movups приёмник, источник – переслать невыравненные упакованные числа. Отличие в том, что если адрес некратен 16 байтам, команда выполняется нормально. Если можно достичь выравнивания, то лучше пользоваться командой movaps, так как она быстрее

3) movhps приёмник, источник – переслать старшие упакованные числа. Копирует старшие 64 бита из источника в приёмник. Младшие 64 бита приёмника не изменяются. Приёмник и источник могут быть переменной или регистром SSE

4) movlps приёмник, источник – переслать младшие упакованные числа (аналогично)

5) movhlps приёмник, источник – пере-слать старшие упакованные числа в младшие. Копирует старшие 64 бита источника в младшие 64 бита приёмника. Старшие 64 бита приёмника не меняются. Источник и приёмник – регистры SSE

6) movlhps приёмник, источник – пере-слать младшие упакованные числа в стар-шие. Источник и приёмник могут быть только регистрами SSE


7) movmskps приёмник, источник – переслать маску в переменную. В приёмник (r32) записывается 4-битная маска, отвечающая знакам четырёх вещественных чисел, находящихся в источнике (rSSE). Фактическм 0-й бит приёмника устанавливается равным биту 31 источника, 1-й – 63-му, 2-й – 95-му, 3-й – 127-му, остальные биты приёмника обнуляются

8) movss приёмник, источник – переслать одно вещественное число. Копирует младшие 32 бита из источника в приёмник. Если приёмник – регистр SSE, его старшие 96 бит обнуляются. Если приёмник – переменная в памяти, то старшие 96 бит не изменяются. Каждый из аргументов может быть либо регистром SSE, либо переменной в памяти


Следующая страница (арифметические команды SSE)