salut tout le monde , j ai une parti du code en c++, que j ai voulu optimiser , le l ai reécri en asm , mai ça donne pas grand chose, si quelqu un pourrai m aider ça sera trop cool
voila la boucle en c++:
for ( i= 0;i< iProduit; i++,buffy++) // buffy un tableau de short
{ if (*buffy > maxv)
p_iImagePixelOGL[i] = 0;/* p_iImagePixelOGL un tableau de BYTE*/
else if (*buffy < minv)
p_iImagePixelOGL[i] = 255;
else
p_iImagePixelOGL[i] = (BYTE)(255-(((*buffy-minv) * produit) >> 10));
}
//===================================
la traduction en asm donne :
__asm
{
// if (*buffy > maxv)
toto: mov edx,dword ptr [ebp-18h]
movsx eax,word ptr [edx]
cmp eax,dword ptr [ebp-0Ch]
jle toto1
mov ecx,dword ptr [ebp-4]
mov edx,dword ptr [ecx+28h]
mov eax,dword ptr [i]
mov byte ptr [edx+eax],0
jmp toto2
toto1: mov ecx,dword ptr [ebp-18h]
movsx edx,word ptr [ecx]
cmp edx,dword ptr [ebp-8]
jge toto3
mov eax,dword ptr [ebp-4]
mov ecx,dword ptr [eax+28h]
mov edx,dword ptr [i]
mov byte ptr [ecx+edx],0FFh
jmp toto2
toto3: mov eax,dword ptr [ebp-18h]
movsx ecx,word ptr [eax]
sub ecx,dword ptr [ebp-8];
imul ecx,dword ptr [ebp-10h]; sar ecx,10; mov edx,255
sub edx,ecx;
mov eax,dword ptr [ebp-4]
mov ecx,dword ptr [eax+28h]
mov eax,dword ptr [i]
mov byte ptr [ecx+eax],dl
toto2:
add dword ptr [ebp-18h],2
inc dword ptr [i]
mov eax,dword ptr [ebp-4]
mov ecx,dword ptr [i]
cmp ecx,dword ptr [eax+134h]
jl toto
}
sachant que je développe en visual c++;
Merci