ESP moins rapide que EAX ?

Résolu
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 9 août 2004 à 20:55
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 10 août 2004 à 00:13
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2004 à 22:08
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++
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
9 août 2004 à 22:11
Ok merci, donc si je comprend, il vaut mieux utiliser les registres generaux a esp..

merci Brunews

++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2004 à 22:14
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++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2004 à 22:18
Ecrire la func IsMappedSysApp version naked pour VS, ok ?

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
9 août 2004 à 22:28
C koi cette fonction IsMappedSysApp ? Pas trouvé sur msdn ni sur cs...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 août 2004 à 22:35
Unique Instance, source de bn
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2004 à 22:36
dans la source
http://www.cppfrance.com/code.aspx?ID=25238

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

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
9 août 2004 à 23:47
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
}
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2004 à 23:58
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++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 août 2004 à 00:03
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++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 août 2004 à 00:13
SVP, on continue par mails pour ne pas encombrer le serveur.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Rejoignez-nous