Problema aparentemente trivial en el ensamblaje: Quiero copiar todo el registro de XMM0 a XMM3. He intentado¿Cómo se mueven los valores de 128 bits entre los registros XMM?
movdq xmm3, xmm0
pero MOVDQ no se puede utilizar para mover los valores entre dos registros XMM. ¿Qué debería hacer?
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
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
Lo mismo se aplica a los operadores lógicos: tales como: 'por',' orps', y 'orpd' – Mysticial