Specifications

Table Of Contents
7–6 Altera Corporation
Nios II Processor Reference Handbook User Guide October 2007
Stacks
Figure 7–3. Stack Frame Using Variable Arguments
Stack Frame for a Function with Structures Passed By Value
Functions that take struct value arguments still have their first 16-bytes of
arguments arriving in registers r4 through r7, just like other functions.
Implementation note: if part of a structure is passed via registers, the
function may need to copy the register contents back to the stack. This is
similar to the variable arguments case as shown in Figure 7–3.
Function Prologs
The Nios II C/C++ compiler generates function prologs that allocate the
stack frame of a function for storage of stack temporaries and outgoing
arguments. In addition, each prolog is responsible for saving any state of
its calling function for variables marked callee-saved by the ABI. The
callee-saved register are listed in Table 7–2 on page 7–2. A function prolog
is required to save a callee saved register only if the function will be using
the register.
In Function a()
Just Prior to Calling b()
In Function b()
Just after Executing Prolog
incoming
stack
arguments
saved
registers
space for
outgoing
stack
arguments
Allocated and freed by a()
(i.e. the calling function)
Allocated and freed by b()
(i.e. the current function)
outgoing
stack
arguments
Higher addresses
Lower addresses
fp and sp
fp and sp
copy of r7
copy of r6
copy of r5
copy of r4
space for
stack
temporaries