ORdream
Messages postés2Date d'inscriptiondimanche 29 août 2004StatutMembreDernière intervention29 décembre 2009 10 oct. 2008 à 16:23
bon bah ça c'est dit! j' vais la supirmer !! mais je trouve pas comment on suprime une source ici!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 sept. 2008 à 21:38
wsprintf() est une fonction ultra lente by design puisqu'elle doit d'abord parser une chaine de formatage avant de savoir comment entrer les infos dans le buffer destination. Ce genre de fonction a été créée pour les handicapés du C, va sans dire que dans de l'ASM c'est à exclure absolument.
C'est quoi ces séries de:
pop ecx
push ecx
On remplace par: mov ecx, [esp + xxx]
.if (dl == 1)
print offset szProtocol1
.elseif (dl == 2 )
print offset szProtocol2
.elseif (dl == 3 )
print offset szProtocol3
.elseif (dl == 4 )
print offset szProtocol4
.elseif (dl == 5 )
print offset szProtocol5
.elseif (dl == 6 )
etc, etc...
NON et NON, même un compilo VB aurait fait ça correctement.
Tes szProtocol doivent être alignés correctement en segment .DATA et ensuite ça allait tout seul avec un truc du genre:
xor edx, edx
mov eax offset szPROTOCOLS
mov dl,byte ptr [iphead.protocole]
mul edx, LenDeProtocol
; bien entendu MUL à remplacer par qlq LEA ou SHL judicieux
add eax, edx
print eax
On vient de virer 36 tests et donc autant de sauts de code.
Tout le reste étant du même tonneau, on arrêtera là.
Ce listing n'est absolument pas de l'ASM, tout juste une transcription d'un listing C qui donnera à la finale un binaire 100 fois plus mauvais que ce qu'aurait produit un compilo C.
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 23 sept. 2008 à 16:40
un zip avec tous les fichiers inclus serait le bienvenu
SNIFFERMASM.inc ........packet\
10 oct. 2008 à 16:23
23 sept. 2008 à 21:38
C'est quoi ces séries de:
pop ecx
push ecx
On remplace par: mov ecx, [esp + xxx]
.if (dl == 1)
print offset szProtocol1
.elseif (dl == 2 )
print offset szProtocol2
.elseif (dl == 3 )
print offset szProtocol3
.elseif (dl == 4 )
print offset szProtocol4
.elseif (dl == 5 )
print offset szProtocol5
.elseif (dl == 6 )
etc, etc...
NON et NON, même un compilo VB aurait fait ça correctement.
Tes szProtocol doivent être alignés correctement en segment .DATA et ensuite ça allait tout seul avec un truc du genre:
xor edx, edx
mov eax offset szPROTOCOLS
mov dl,byte ptr [iphead.protocole]
mul edx, LenDeProtocol
; bien entendu MUL à remplacer par qlq LEA ou SHL judicieux
add eax, edx
print eax
On vient de virer 36 tests et donc autant de sauts de code.
Tout le reste étant du même tonneau, on arrêtera là.
Ce listing n'est absolument pas de l'ASM, tout juste une transcription d'un listing C qui donnera à la finale un binaire 100 fois plus mauvais que ce qu'aurait produit un compilo C.
23 sept. 2008 à 16:40
SNIFFERMASM.inc ........packet\