L asm et la config release

Signaler
Messages postés
31
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
26 mars 2009
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
salut tout le monde, j ai un probleme avec la configuration release de visaul c++, le probleme c est que j ai due inserer un bout de code en asm dans mon application , et quand je la compile en release ça donne aucun erreur mais quand je l execute ça crash, disant qu il y a des adresse qu on peut pas lire , ce probleme ne se pose pas en configuration debug qui s execute sans erreur,
esqu il y a des particularité pour le mode release? , et comment faire pour évité ce genre de problemes ?
si vs pouvez m aider ça sera cool,
et Merci

8 réponses

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

Il faudrai pour cela voir ton code. Tu as certainements commis des erreurs dans le code en ASM. Tu ne retablie peut être pas comme il faut ceraines valeur de registre ou alors une mauvaise gestion de la pile.

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Il y a de nombreux exemples de func en ASM dans VC++ a regarder dans mes sources, jette un oeil.

ciao...
BruNews, MVP VC++
Messages postés
31
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
26 mars 2009

salut, les sources sont un peu nombreux , vs pouvez me preciser quelques un , je serai trés recinaissant
merci encor une fois
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
exemples ici entre nombreux autres:
http://www.cppfrance.com/code.aspx?ID=10918
http://www.cppfrance.com/code.aspx?ID=11059

et ceci est quasi complet ASM dans un squelette C:
http://www.cppfrance.com/code.aspx?ID=10342

ciao...
BruNews, MVP VC++
Messages postés
31
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
26 mars 2009

salut tot le monde, jusqu à mnt j arrive pas à trouvé ou est l erreur dans mon code asm, car ça marche trés bien en debug et il crash en release.
en faite voila mon code:
__asm push esi
__asm push edi
__asm mov ecx,dword ptr [ebp-4]

__asm mov edx,dword ptr [ecx+28h]
__asm mov edi,edx
__asm mov ebx,dword ptr [ecx+134h]

// debut boucle ==================================
__asm toto:
__asm mov edx,buffy
__asm movsx eax,word ptr [edx]
__asm
__asm mov esi,eax
__asm cmp esi,maxv
__asm jle toto1

__asm mov eax,dword ptr [i]

__asm and byte ptr [edi+eax],0
__asm jmp toto2
__asm toto1:
__asm cmp esi,minv
__asm jge toto3

__asm mov edx,dword ptr [i]
__asm or byte ptr [edi+edx],255
// else
__asm jmp toto2
__asm toto3:
__asm mov ecx,esi
__asm sub ecx,minv;
__asm imul ecx,produit;
__asm sar ecx,10;
__asm or edx,255
__asm sub edx,ecx;
__asm mov eax,dword ptr [i]
__asm mov byte ptr [edi+eax],dl

__asm toto2:
__asm add dword ptr [ebp-18h],2
__asm inc dword ptr [i]
__asm mov ecx,dword ptr [i]
__asm cmp ecx,ebx
__asm jl toto
// fin boucle =================================================
__asm pop edi
__asm pop esi

comme vs pouvez le remarquez il s agit d une boucle while,
Merci encore une fois :)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
3eme ligne on trouve:
mov ecx,dword ptr [ebp-4]

EBP est initialise ou il faut ? idem lignes suivantes.

mets tout le bloc dans:
__asm {

}

et ne pas mettre un petit bout de fonction en asm mais au complet sinon tu ne feras que gener l'optimisation du compilo.

ciao...
BruNews, MVP VC++
Messages postés
31
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
26 mars 2009

salut, je crois que j ai trouvé quelque chose mais je sais pas encore d ou viens le probleme, en faite quand je fait l option maximize speed dans les setting pour la configuration release ça crash, mai quand je la met disable(debug) ça marche sans probleme .
d ou viens ce probleme? j aimerai bien savoir
et Merci :)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Des routines entierement ecrites en asm n'ont rien a faire en mode debug. Elles doivent etre essayees et mesurees dans des mini progs de test, puis inserees dans la version release.

ciao...
BruNews, MVP VC++