Pages : 1
#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.
Dernière modification par Skippy le Grand Gourou (Le 09/03/2008, à 18:28)
Hors ligne
Pages : 1