par ex :
float *tab = new float[2];
float *tab2 = new float[2];
//remplis les tab
_asm
{
mov esi,tab;
mov edi,tab2;
movq mm0,[esi]; //copie de tab dans un registre MMX (un registre MMX fait 64bit de long, il peut donc contenir nos deux float)
movq mm1,[edi]; //copie de tab2 dans un autre registre MMX
pfmul mm0,mm1;
movq [esi],mm0
}
ce qui equivaut a :
tab[0] = tab[0] * tab2[0];
tab[1] = tab[1] * tab2[1];
sauf que on a fait juste une multiplication (pfmul)
Note, un registre MMX fait 64bit de long . tu peux le voir comme deux registres accoles de 32 bits, 4 de 16 ou 8 de 8, mais pas comme un de 64.
vala...
(c t du 3dnow ca)
c + clair ou tjs confu ?