BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 déc. 2004 à 11:08
Ils sont expliques je crois dans l'aide de MASM32. Unefois 'prologue' et 'epilogue' mis a 'none', c'est suffisant pour avoir la maitrise de ce qui sera produit. Tu sauras exact ou aller prendre les params, le 1er commençant bien en [esp+4], il faudra gerer correctement ESP et bien deplier en sortie (ret xxx) ou xxx est le nbr de params * 4 pour un prog 32 bits. Tu dois restituer comme tu les as trouves tous les registres sauf EAX, ECX et EDX.
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 18 déc. 2004 à 01:13
Merci c'est très instructif ça... tu sais pas ou je pourrais trouver la signification de ces paramètres (et des autres si il y en a)?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 17 déc. 2004 à 15:19
Quand on ecrit en asm doit etre asm sinon tu ecris en C sur VS et au moins il y a un super compilo pour produire un asm optimal. Faut laisser tomber le sabir MASM32 (IF etc...).
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 17 déc. 2004 à 14:49
Ah non ca ne va pas pour ESI. j'avais deja essayer en fait le compilo interprete mov esi, addrCPUID comme mov esi, dword ptr [esp+4] et je dois modifier les 3 long qui se trouve a l'adresse pointer par addrCPUID.
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 17 déc. 2004 à 14:40
En fait c'est le template de MASM en je ne me suis interesser qu'à la procedure GetCPUID.
J'ai fait le code en 10 seconde mais tes remarque sont plutôt interessante surtout avec ESI. Je rectifie ça de suite.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 16 déc. 2004 à 22:18
De quel exemple trop nul as-tu fait ce copier coller ???
LibMain: tu sauves un hInstance absolument inutile. Il y a aussi des registres pour travailler, push pop pour transferer une valeur, non !!! pourquoi cette suite d'analyse de 'reason' ???
GetCPUID: pourquoi mettre le param dans ESI a la 1ere ligne alors qu'il est sur la pile, ça genere 6 cycles inutiles.
18 déc. 2004 à 11:08
18 déc. 2004 à 01:13
17 déc. 2004 à 15:19
http://www.cppfrance.com/code.aspx?id=19713
17 déc. 2004 à 15:10
.586
.model flat, stdcall
option casemap :none
option prologue:none
option epilogue:none
ça va supprimer les envies de stackframe et autres conneries qu'on ne demande pas.
LibMain proc ; on sait les 3 params d'une DLL
mov eax, 1
ret 12
LibMain endp
GetCPUID proc addrCPUID:DWORD
mov eax,1
cpuid
mov edx, [esp+4]
mov dword ptr [edx + 4],eax
mov eax,3
cpuid
mov eax, [esp+4]
mov dword ptr [eax + 8],ecx
mov dword ptr [eax + 12],edx
ret 4
GetCPUID endp
end LibMain
Quand on ecrit en asm doit etre asm sinon tu ecris en C sur VS et au moins il y a un super compilo pour produire un asm optimal. Faut laisser tomber le sabir MASM32 (IF etc...).
17 déc. 2004 à 14:49
17 déc. 2004 à 14:40
J'ai fait le code en 10 seconde mais tes remarque sont plutôt interessante surtout avec ESI. Je rectifie ça de suite.
16 déc. 2004 à 22:18
LibMain: tu sauves un hInstance absolument inutile. Il y a aussi des registres pour travailler, push pop pour transferer une valeur, non !!! pourquoi cette suite d'analyse de 'reason' ???
GetCPUID: pourquoi mettre le param dans ESI a la 1ere ligne alors qu'il est sur la pile, ça genere 6 cycles inutiles.
Bonne continuation.