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

assembly, c, instruction-set, x86

Solution

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 

Problem

``` 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?

Original source

Related problems