[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here is the basic stack layout.
STACK_GROWS_DOWNWARD
When we say, "define this macro if ...," it means that the
compiler checks this macro only with #ifdef
so the precise
definition used does not matter.
FRAME_GROWS_DOWNWARD
ARGS_GROW_DOWNWARD
STARTING_FRAME_OFFSET
If FRAME_GROWS_DOWNWARD
, find the next slot's offset by
subtracting the first slot's length from STARTING_FRAME_OFFSET
.
Otherwise, it is found by adding the length of the first slot to the
value STARTING_FRAME_OFFSET
.
STACK_POINTER_OFFSET
If ARGS_GROW_DOWNWARD
, this is the offset to the location above
the first location at which outgoing arguments are placed.
FIRST_PARM_OFFSET (fundecl)
If ARGS_GROW_DOWNWARD
, this is the offset to the location above
the first argument's address.
STACK_DYNAMIC_OFFSET (fundecl)
alloca
.
The default value for this macro is STACK_POINTER_OFFSET
plus the
length of the outgoing arguments. The default is correct for most
machines. See `function.c' for details.
DYNAMIC_CHAIN_ADDRESS (frameaddr)
If you don't define this macro, the default is to return the value of frameaddr---that is, the stack frame address is also the address of the stack word that points to the previous frame.
SETUP_FRAME_ADDRESSES
BUILTIN_SETJMP_FRAME_VALUE
setjmp
buffer.
The default value, virtual_stack_vars_rtx
, is correct for most
machines. One reason you may need to define this macro is if
hard_frame_pointer_rtx
is the appropriate value on your machine.
RETURN_ADDR_RTX (count, frameaddr)
RETURN_ADDR_IN_PREVIOUS_FRAME
is defined.
The value of the expression must always be the correct address when
count is zero, but may be NULL_RTX
if there is not way to
determine the return address of other frames.
RETURN_ADDR_IN_PREVIOUS_FRAME
INCOMING_RETURN_ADDR_RTX
REG
, indicating that the return
value is saved in `REG', or a MEM
representing a location in
the stack.
You only need to define this macro if you want to support call frame debugging information like that provided by DWARF 2.
INCOMING_FRAME_SP_OFFSET
You only need to define this macro if you want to support call frame debugging information like that provided by DWARF 2.
ARG_POINTER_CFA_OFFSET
INCOMING_FRAME_SP_OFFSET
. Which is unfortunately not usable
during virtual register instantiation.
You only need to define this macro if you want to support call frame debugging information like that provided by DWARF 2.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |