DATE CONVERSION EN INT32 (MASM32 WIN32)

cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 - 3 févr. 2005 à 23:13
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 11 févr. 2005 à 13:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29280-date-conversion-en-int32-masm32-win32

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 févr. 2005 à 13:21
C'est bien admis que le 'ALIGN 4' devait etre avant le label.
Voila ce que c'est de copier coller un squelette pret a l'emploi sans y avoir bien fait gaffe, je l'ai deja modifie.
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
11 févr. 2005 à 13:02
re,

le fin mot de l'histoire:

d'apres la documentation VC6, il est dit que les ALIGN sont remplaces par des NOPS.

c'est faux, cela dépends du nombre d'octets mais c toujours un code qui ne fait rien
( mov eax,eax // lea ecx,[ecx+00] )

bien sur que ton programme ne change pas. Regarde juste la valeur EntryPoint de ton PEHeader.

ton erreur n'est pas tres grave. Il est juste rigolo de constater qu'un gars comme toi qui se restreint a ne voir que l'optimisation dans l'ASM se retrouve a ajouter des instructions inutiles. ( dès la première instruction en + )

il est bien évident que ce n'est pas le code sous jacent a un label qui doit etre aligné mais bien le label.
( il doit y avoir quelques exceptions rares )

@++
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
10 févr. 2005 à 11:41
re,

il est peut etre déjà aligné sur 4 octets et donc les caractères de paddings sont peut etre des int3 et ton programme fonctionne par chance.

@++
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 févr. 2005 à 13:52
allez je t'accorde que
ALIGN 4
start:
est au moins plus cohérent mais sinon je retrouve 2 images exe absolument identiques, ce qui ne voudrait pas dire pour autant que ce serait toujours le cas.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 févr. 2005 à 13:02
vais desassembler les 2 versions pour voir la différence profonde, suis pas délicat moi, je regarde et j'admets quand c'est ok.
Et te fache pas un mercredi matin, la semaine est encore longue...
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 févr. 2005 à 12:48
re,

ALIGN 4
start:

te permettra de ne faire confiance qu'a toi meme et t'evitera de raconter n'importe quoi quand a VS qui te generera aussi des problemes si tu met n'importe quoi n'importe ou.

@++
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 févr. 2005 à 12:38
je demande simplement que les instructions soient alignées sur 4 tant que je manipule des registres et autres instructions 32 bits, alors ce qu'il insère je me vois un peu contraint de faire confiance à MASM32, pas 1 seconde à perdre là dessus sinon je le fais sur VS2003 et alors lui oui qu'il fait les bons insert.
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
9 févr. 2005 à 12:24
si tu met

start:
ALIGN 4

Ce n'est pas start qui est aligné mais le code dessous.
Quel interet ?
Comment peut tu etre sur que les caracteres d'alignement seront des nop et pas des int3 ?

@++
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
5 févr. 2005 à 00:14
Héhé... Merci pour ta réponse aussi rapide que l'éclair!
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 févr. 2005 à 23:24
ah oui, tu peux mettre push 0 à la place. C'est les restes des tripatouillages et reflexions interrompues, ce code a été fait pendant le salon Linux en direct sur le stand, une fois en C histoire de faire démo de Visual Studio et ensuite transcription en ASM. Alors entre les jolies nanas qui passaient et les gens qui posaient des questions sur tout autre chose...
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
3 févr. 2005 à 23:13
Encore un code impeccable! :)

Question : dans 'onINITDIALOG', pourquoi utiliser le registre edx? Deux simples 'push 0' suffiraient à la place des deux 'push edx' (où edx = 0) ! Suis-je dans l'erreur ?
Rejoignez-nous