Problema apparentemente banale in assemblea: voglio copiare l'intero registro XMM0 su XMM3. Ho provatoCome si spostano i valori a 128 bit tra i registri XMM?
movdq xmm3, xmm0
ma MOVDQ non può essere utilizzato per spostare valori tra due registri XMM. Cosa dovrei fare invece?
movdqa è quello che stavo cercando :) Grazie. È stato veloce :) PS. In che modo le mosse in virgola mobile differiscono effettivamente da quelle integer? Per entrambi dovrei copiare semplicemente ... – lampak
Sui processori Intel, ci sono unità FP e interi separate. Quando esegui un'istruzione che si trova in una unità, il valore viene spostato su quell'unità. Ma quando si impartisce un'istruzione in un dominio diverso a quel valore, deve essere spostato nella nuova unità - con una penalità di 1-2 cicli. Pertanto, è meglio mantenere un valore in un dominio, se possibile, quindi perché ci sono diverse istruzioni 'mov'. Se stai facendo aritmetica dei numeri interi e usi 'movaps', pagherai una penalità per spostare il valore sull'unità FP, e un'altra penalità per spostarla indietro sulla successiva istruzione intera impartita. – Mysticial
Lo stesso vale per gli operatori logici: come: 'por',' orps' e 'orpd' – Mysticial