Why does leave do "mov esp,ebp" in x86 assembly?
assembly, x86
Solution
`mov esp,ebp` sets the stack pointer to the base frame address, effectively releasing the whole frame. (Don't forget that this is Intel syntax, the destination comes first.) If you didn't do it, once you call `ret`, you would still be using the called function's stack frame with your calling function, with crashtastic consequences.
Problem
It's said that the `leave` instruction is the same as : ``` mov esp,ebp pop ebp ``` But what is `mov esp,ebp` here for? It doesn't seem valid to me...