Stack
Related Blog Items
- Frame Pointer Vs Stack Pointer
- Reversing a single linked list using stack
- Printing linked List in Reverse without Reversing The List Actually
- Stack Segment
- Calling conventions on the x86 platform
Almost all the cases explained below are for intel x86 under linux platform and compiled using gcc.
The stack is LIFO data structure. Stack boundary is defined by extended stack pointer (ESP) register. In over case ESP points to the last address used on the stack, whereas there as architectures in which it points to the first free address.
Suppose we call a function f(1,2,3) from our main program. What happens behind the scenes is as follows.
1. Push the arguments in the reverse order ( eg. 3,2 and 1)
2. Then the function is invoked (CALL), which places the return address into stack, i.e. the current extended instruction pointer register (EIP). This is place where the function should ret when it executes return statement or rather RET opcode.
3. Current value of extended base pointer register (EBP) is pushed into the stack, this is also referred to as stack frame pointer. EBP is used for relative addressing of element in stack. When the calle function returns it is used to refer the elements of the stack of caller function.
4. Once EBP is stored on the stack, we move the current ESP to EBP for refering the elements local to the current stack frame.
5. Reserve the address space required for the local variables of the function.
[tags]stack, stack usage, c programming stack, active records[/tags]
Popularity: 7%
You need to log on to convert this article into PDF
Related Blog Items - Frame Pointer Vs Stack Pointer
- Reversing a single linked list using stack
- Printing linked List in Reverse without Reversing The List Actually
- Stack Segment
- Calling conventions on the x86 platform
Related Blog Items
- Frame Pointer Vs Stack Pointer
- Reversing a single linked list using stack
- Printing linked List in Reverse without Reversing The List Actually
- Stack Segment
- Calling conventions on the x86 platform
No Comments
No comments yet.