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

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -