2011-12-29 17 views

Respuesta

10

Es movapd, movaps, o movdqa

movaps xmm3, xmm0 

Todos ellos hacen lo mismo, pero hay una trampa:

  • movapd y movaps operan en el dominio de punto flotante.
  • movdqa opera en el dominio de número entero

Uso el apropiado de acuerdo con su tipo de datos para evitar puestos de dominio cambiante.

Además, no hay ninguna razón para usar movapd. Siempre use movaps en su lugar porque movapd toma un byte adicional para codificar.

+1

movdqa es lo que estaba buscando :) Gracias. Eso fue rápido :) PD. ¿Cómo los movimientos flotantes realmente difieren de los enteros? Para mí, ambos deberían ser simples copias ... – lampak

+4

En los procesadores Intel, hay unidades FP y enteros independientes. Cuando ejecuta una instrucción que está en una unidad, el valor se mueve a esa unidad. Pero cuando emite una instrucción en un dominio diferente a ese valor, debe moverse a la nueva unidad, con una penalización de 1-2 ciclos. Por lo tanto, es mejor mantener un valor en un dominio si es posible, de ahí que haya diferentes instrucciones de 'mov'. Si está haciendo una aritmética de enteros y usa 'movaps', pagará una penalidad para mover el valor a la unidad de FP, y otra penalización para moverla de regreso a la siguiente instrucción entera que se le emita. – Mysticial

+1

Lo mismo se aplica a los operadores lógicos: tales como: 'por',' orps', y 'orpd' – Mysticial

Cuestiones relacionadas