What's the point of LEA EAX, [EAX]?

Frederick The Fool picture Frederick The Fool · Apr 24, 2010 · Viewed 10.3k times · Source
LEA EAX, [EAX]

I encountered this instruction in a binary compiled with the Microsoft C compiler. It clearly can't change the value of EAX. Then why is it there?

Answer

codaddict picture codaddict · Apr 24, 2010

It is a NOP.

The following are typcially used as NOP. They all do the same thing but they result in machine code of different length. Depending on the alignment requirement one of them is chosen:

xchg eax, eax         = 90
mov eax, eax          = 89 C0 
lea eax, [eax + 0x00] = 8D 40 00