assembly leal and movl difference
LEA
loads an effective address generated by an address calculation into a register. MOV
moves something somewhere, when using SIB addressing as source operand, it moves whatever is at the address generated by the address calculation into the target operand.
So:
leal (%eax,%ecx,4), %edx ← moves %eax+%ecx*4 into %edx
movl (%eax,%ecx,4), %edx ← moves whatever is at address %eax+%ecx*4 into %edx
Related videos on Youtube
Swen
Updated on June 04, 2022Comments
-
Swen almost 2 years
leal(%eax,%ecx,4), %edx
as I was reading from my computer systems book, if there`s premises that $eax contains x value and %ecx contains y, then the above means, x+4y putting into %edx.
then if it is
movl(%eax,%ecx,4), %edx
, then isn`t the same one with leal expression above?
As I know, leal creates address that can be referenced,not referencing by itself like movl, but
when I saw
leal(%eax,%ecx,4), %edx
equals puttingx+4y
intoedx
register, then doesnt it mean that it 'referenced'
%eaxand
%ecx` and extracted value x and y for using computation??- doesn`t it "()" means 'referenced'??