begin process at 2012 05 25 11:42:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

c, c++ et asm

 > 

optimisation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

optimisation

jeudi 11 novembre 2004 à 16:58:16 | optimisation

sajid_morad


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
vendredi 12 novembre 2004 à 14:29:47 | Re : optimisation

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

1 - en asm inline, il me semble que l'on peut acceder au nom des variable directement.

mov edx,buffy
movsx eax,word ptr [edx]
cmp eax,maxv
jle toto1

2 - *buffy est utilisée régulierement. sauvegarde la dans un registre.

push esi
mov edx,buffy
movsx eax,word ptr [edx]
cmp eax,maxv
mov esi,eax
jle toto1
...
pop esi

@++


Cette discussion est classée dans : mov, ptr, dword, eax, ecx


Répondre à ce message

Sujets en rapport avec ce message

BeginPaint code débutant [ par TRAX44 ] Bonjour, le problème est tout simple je comprends absolument pas ce qui marche pas. Le "programme" est censé créer une fenêtre est afficher du texte e Pb registre DL [ par AlexMAN ] Bonjour, J'ai un ptit pb avec le code qui suit, au nivo du mov dl, [ecx] ://Renvoie pointeur sur fin de chaine (permet d'eviter l'utilisation de strca LecteurEstDvd asm inline [ par AlexMAN ] Bonjour, Voila j'ai un ptit pb au nivo, je pense, de l'appel de la fonction DeviceIoControl, le code : //Fonction Cint __stdcall LecteurEstDvd(char *p Cycles de mov [ par vecchio56 ] Je me demandais si les instructions suivantes étaient équivalentes en termes de performances, ou si certaines d'entres elles demandaient plus de cycle exception 13 lors du scan memoire haute [ par patatalo ] salut, pourquoi ce code de detection de memoire en mode 32 bits sans paging me donne une exception 13 sur certaines cartes meres ( ASUS ) a l'adresse j'ai un prob avec mon buffer ; ya pas d'amuses gueules (masm32) [ par papiboff ] bj si je mets le buffer "somme " en dd avec charge eax et que j'ajoute deux 'dec ebx ' , ben , marche pas correctement ; (pêrqué ???? = en french) sv Aligner des données pour le SSE [ par epineurien ] Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu en quel langage est ecrit ce programme [ par jedilu ] bonjouren quel language est ecrit ce programme car j'ai un probleme pour le lancermerci00629DE5   AE               SCAS BYTE PTR ES:[EDI]00629DE6   9E Problemme avec mes character... XD [ par belette321 ] J'esseil d'ajouter une commande administrateur a dans un des mes jeux en-ligne, /admin_popup (Fait apparaitre un MSG dans une boite dans le lobby). Un out bmp [ par vincent2795 ] Bonjour, dans ma source, j' essaye de faire un screenshot, et de le nommer pas la date et l' heure ou il es pris. mon problème: si le nom du fichier e


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales