Using and Porting GNU CC
FIXED_REGISTERS. On most machines, the hardware determines which register this is.
FRAME_POINTER_REGNUMthe number of a special, fixed register to be used internally until the offset is known, and define
HARD_FRAME_POINTER_REGNUMto be actual the hard register number used for the frame pointer.
You should define this macro only in the very rare circumstances when it
is not possible to calculate the offset between the frame pointer and
the automatic variables until after register allocation has been
completed. When this macro is defined, you must also indicate in your
ELIMINABLE_REGS how to eliminate
FRAME_POINTER_REGNUM into either
Do not define this macro if it would be the same as
FIXED_REGISTERS, or arrange to be able to eliminate it (see Elimination).
STATIC_CHAIN_INCOMING_REGNUM, while the register number as seen by the calling function is
STATIC_CHAIN_REGNUM. If these registers are the same,
STATIC_CHAIN_INCOMING_REGNUMneed not be defined.
The static chain register need not be a fixed register.
If the static chain is passed in memory, these macros should not be defined; instead, the next two macros should be defined.
memexpressions that denote where they are stored.
STATIC_CHAIN_INCOMINGgive the locations as seen by the calling and called functions, respectively. Often the former will be at an offset from the stack pointer and the latter at an offset from the frame pointer.
arg_pointer_rtx will have been initialized prior to the use of these
macros and should be used to refer to those items.
If the static chain is passed in a register, the two previous macros should be defined instead.