The registers %ebp and %esp are used to hold the addresses of the bottom and the top, respectively of the stack frame of the currently executing function in a program.
Snapshot of memory during execution after main has called sumFirst:
| Linked machine instructions | |
| Global Initialized Data | |
| Global Initialized Data | |
| Area for dynamic allocation (new or malloc) | |
| %esp -> | Stack Frame for sumFirst |
| %ebp -> | |
| Stack Frame for main |