I Just want to make sure I am reading this right:
movl 12(%ebp), %edx
leal (%edx, %edx, 4), %eax
I read the first line as: edx = [epb + 12]
, and the second line as: eax = edx + edx*4
Can anybody clarify?
Also, what if I had the following two lines:
leal (%edx, %edx, 4), %eax
leal (%edx, %edx, 2), %eax
Once the second line is executed, would the eax
register be overwritten?
And the eax = edx + edx*4
is multiplying the address by 4? Or the contents of the address by 4?
You're right. The LEA
instruction is used to Load (the) Effective Address, and can be used for address arithmetic and sometimes also ordinary arithmetic, if you don't need the flags.