frame pointers and stack pointers

nobody wrote on Friday, June 24, 2005:

Can anyone tell me the difference between frame pointers and stack pointers??

thanks in advance

nobody wrote on Friday, June 24, 2005:

As an example, assume you are running an 8bit system and you call a function that declares four 8 bit local variables.  Also assume your target processor has a stack pointer (SP) and another register X.

A compiler that uses frame pointers (not all do) might behave as follows:

When the function is entered the first thing that is done is to set X equal to SP.  Next SP is decremented by 4 (assumes stack grows down).  The space between X and SP is used for the four local variables.

Now X is the function frame pointer.  It is used to access the four local variables as X+1, X+2, X+3 and X+4.

SP is the stack pointer (obviously still).  The function is free to use the stack.  If the function allocates more data on the stack then SP will change but X will remain the same - so the four variables can still be access as offsets from X no matter what value SP holds.