Bonjour,
Je viens de me metre tres recement à l'assembleur, bien que je ne doute pas des capacité de celui-ci, voici mon probleme.
J'ai testé mon code dans Visual Studio 2005, voici mes 2 fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void ASMbuff8to32(BYTE* in, BYTE* out, int imgSize)
{
	__asm					
	{
		mov ecx, imgSize //Stock la taille de l'image
		mov eax, in		 //pointe sur l'image d'entree
		mov ebx, out	 //pointe sur l'image de sortie
		label:
			mov dl, byte ptr [eax]//recupere le BYTE de l'image d'entree
			mov byte ptr [ebx], dl	//copie le 3 fois dans l'image de sortie
			mov byte ptr [ebx+1], dl	
			mov byte ptr [ebx+2], dl
			add ebx,3		//avance de 3 sur l'image de sortie
			inc eax			//avence d'un sur l'image d'entree
							//decremente le compteur
			loop label		//boucle tant que ecx > 0
	}
}
 
void buff8to32(BYTE* in, BYTE* out, int imgSize)
{
	while ( imgSize >= 0 )
	{
		*out = *in;
		out++;
		*out = *in;
		out++;
		*out = *in;
		out++;
		in++;
		imgSize--;
	}
}
Et lorsque je teste la rapidité d'execution, mon code ASM est plus lent que mon code C ! (Mode Release avec optimisation standard )
En regardant en mode debugage de VS, je remarque de le code ASM généré par ma function C est bien plus long et à l'air d'etre bien mois optimisé!
Je sais que l'integration de code Asm dans un langage C, n'est pas la façon la plus rapide d'execution, mais c'est quand meme bien étrange ?

Si vous avez le moindre soupçon, de savoir d'ou cela peu provenir, merci de bien vouloir eclairer ma lumiere dans ce sombre couloir... je suis completement désassemblé