Как вы перемещаете 128-битные значения между регистрами XMM? - PullRequest
6 голосов
/ 29 декабря 2011

Кажущаяся тривиальная проблема в сборке: я хочу скопировать весь регистр XMM0 в XMM3 Я пробовал

movdq xmm3, xmm0

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

1 Ответ

10 голосов
/ 29 декабря 2011

Это movapd, movaps или movdqa

movaps xmm3, xmm0

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

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

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

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

...