3 The “old” and “new” frame pointer

It is also a convention that a subroutine would push a copy of the frame pointer on the stack first. In other words, almost every subroutine starts with the following instruction:

pushl %ebp

Immediately after this instruction, the frame pointer is rewritten to begin a reference point of the current invocation;

movl %esp,%ebp