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?