Is there a way to optimize this x86 assembly code? -
assume given values in eax,ecx. write piece of code calculates 5*eax + 3*ecx + 1, , stores result inside eax. (* means multiplication here).
my code :
;initialize values in eax , ecx mov eax,3 mov ecx,4 ;compute 3*ecx mov ebx,eax mov eax,ecx mov edx,3 mul edx ; compute 5*eax mov ecx,eax mov eax,ebx mov edx,5 mul edx ; compute 5*eax + 3*ecx + 1 lea eax,[ecx + eax] inc eax
if "optimize" mean optimize instruction count, sure, use lea
more:
;initialize values in eax , ecx mov eax,3 mov ecx,4 ;compute 3*ecx lea ecx,[ecx*2 + ecx] ; compute 5*eax lea eax,[eax*4 + eax] ; compute 5*eax + 3*ecx + 1 lea eax,[ecx + eax + 1]
this 16 bytes less in machine code size if eyes serve me right.
the rules governing can compute lea
listed in section specifying offset in intel's manuals.
Comments
Post a Comment