ESP moins rapide que EAX ? [Résolu]

Signaler
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour,

En fait, une kestion nous tarode (vecchio et moi) : ya til un intéret a travailler sur ESP par l'intermediaire d'un registre general tel que EAX ?

merci Brunews...

++

13 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
question de taille d'instruction plus courte + permission de PUSHer ou POPer sans AGI stall vu que l'indexation n'est pas sur esp.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Ok merci, donc si je comprend, il vaut mieux utiliser les registres generaux a esp..

merci Brunews

++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Jamais de regle generale, toujours adapter a la situation.
Si on doit faire 3 substitutions de registres pour une indexation sur EAX plutot que sur ESP, alors on a tout faux.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Ecrire la func IsMappedSysApp version naked pour VS, ok ?

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
C koi cette fonction IsMappedSysApp ? Pas trouvé sur msdn ni sur cs...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Unique Instance, source de bn
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
dans la source
http://www.cppfrance.com/code.aspx?ID=25238

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
ok tu veux ke je la réecrive en asm inline ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
oui naked et stdcall comme est.
AGI stall interdit !!!

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Bon Brunews, dsl mais ca marche po, ca a l'air de foirer au nivo du IsWindow, je dois mal recup le handle de la fenetre, et puis le passage de param par registre general foire oci...voila la fonction :

__declspec(naked) int __fastcall a_IsMappedSysApp(char *szname)
{
//ECX = szname
__asm {
xor ebx, ebx
push ecx
push ebx
push 4
call dword ptr[OpenFileMapping]
test eax, eax
jz Finish0
//lea edx, [esp - 20]
//mov dword ptr[edx + 16], ebx
//mov dword ptr[edx + 12], ebx
//mov dword ptr[edx + 8], ebx
//mov dword ptr[edx + 4], 4
//mov dword ptr[edx], eax
push ebx
push ebx
push ebx
push 4
push eax
call dword ptr[MapViewOfFile]
test eax, eax
jz Finish1
push eax
pop edx
push eax
call dword ptr[UnmapViewOfFile]
push edx
call dword ptr[IsWindow]
test eax, eax
jz Finish1
push edx
call dword ptr[GetLastActivePopup]
mov edx, eax
push edx
call dword ptr[IsIconic]
test eax, eax
jz Continue
push SW_RESTORE
push edx
call dword ptr[ShowWindow]
Continue:
push edx
call dword ptr[SetForegroundWindow]
Finish0:
xor eax, eax
ret 0
Finish1:
mov eax, 1
ret 0
}
}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
laisse en __stdcall, c'est utile ici.
Pas besoin des crochets autours des APIs.
Tu as modifie EBX et non restaure, cause fort possible de plantage. Tu dois restaurer tous registres autres que eax,ecx et edx.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
ah oui donc sur le meme sujet, API fait idem ecrase eax, ecx et edx donc tu dois conserver tes valeurs entre chaque appel soit dans un registre autre que ces 3 la ou sur pile.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
SVP, on continue par mails pour ne pas encombrer le serveur.

ciao...
BruNews, Admin CS, MVP Visual C++