Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/03/2008, à 18:27

Skippy le Grand Gourou

Multiplication ASM

Salut,

Je découvre l'assembleur, et une question me turlupine. Si on prend le petit bout de code suivant, qui fait une petite multiplication par 20 :

mov	eax,DWORD PTR [ebp-0x8]	; eax = number
mov	edx,eax					; edx = eax = number
shl	edx,0x2					; edx = edx*2^2 = 4*number
add	edx,eax					; edx = edx+eax = 5*number
lea	eax,[edx*4+0x0]			; eax = 4*edx+0 = 20*number
mov	DWORD PTR [ebp-0x8],eax	; number = eax = 20*number

Ce que je pige pas bien, c'est que dans les arguments de lea, il semble y avoir une multiplication sans instruction... Comment c'est possible ?


PS: Me demandez pas pourquoi je fais pas un IMUL, c'est du désassemblé donc c'est g++ qui a choisi. Optimisation toussa, sans doute. wink

Dernière modification par Skippy le Grand Gourou (Le 09/03/2008, à 18:28)

Hors ligne