Как вы перемещаете 128-битные значения между регистрами XMM?

Казалось бы, тривиальная проблема в сборке: я хочу скопировать весь регистр XMM0 в XMM3. я пробовал

movdq xmm3, xmm0

но MOVDQ нельзя использовать для перемещения значений между двумя регистрами XMM. Что мне делать вместо этого?

1 ответ

Решение

Это movapd, movaps, или же movdqa

movaps xmm3, xmm0

Они все делают одно и то же, но есть одна загвоздка:

  • movapd а также movaps работать в области с плавающей запятой.
  • movdqa работает в целочисленной области

Используйте подходящий в соответствии с вашим типом данных, чтобы избежать сбоев при смене домена.

Кроме того, нет причин использовать movapd, Всегда используйте movaps вместо того, чтобы movapd занимает дополнительный байт для кодирования.

Другие вопросы по тегам