Specifications
Table Of Contents
- Nios II Processor Reference Handbook
- Contents
- Chapter Revision Dates
- About This Handbook
- Section I. Nios II Processor
- 1. Introduction
- 2. Processor Architecture
- 3. Programming Model
- Introduction
- General- Purpose Registers
- Control Registers
- Operating Modes
- Exception Processing
- Memory and Peripheral Access
- Instruction Set Categories
- Referenced Documents
- Document Revision History
- 4. Instantiating the Nios II Processor in SOPC Builder
- Section II. Appendices
- 5. Nios II Core Implementation Details
- Introduction
- Device Family Support
- Nios II/f Core
- Nios II/s Core
- Nios II/e Core
- Referenced Documents
- Document Revision History
- 6. Nios II Processor Revision History
- 7. Application Binary Interface
- 8. Instruction Set Reference
- Introduction
- Word Formats
- Instruction Opcodes
- Assembler Pseudo- instructions
- Assembler Macros
- Instruction Set Reference
- add
- addi
- and
- andhi
- andi
- beq
- bge
- bgeu
- bgt
- bgtu
- ble
- bleu
- blt
- bltu
- bne
- br
- break
- bret
- call
- callr
- cmpeq
- cmpeqi
- cmpge
- cmpgei
- cmpgeu
- cmpgeui
- cmpgt
- cmpgti
- cmpgtu
- cmpgtui
- cmple
- cmplei
- cmpleu
- cmpleui
- cmplt
- cmplti
- cmpltu
- cmpltui
- cmpne
- cmpnei
- custom
- div
- divu
- eret
- flushd
- flushda
- flushi
- flushp
- initd
- initi
- jmp
- jmpi
- ldb / ldbio
- ldbu / ldbuio
- ldh / ldhio
- ldhu / ldhuio
- ldw / ldwio
- mov
- movhi
- movi
- movia
- movui
- mul
- muli
- mulxss
- mulxsu
- mulxuu
- nextpc
- nop
- nor
- or
- orhi
- ori
- rdctl
- ret
- rol
- roli
- ror
- sll
- slli
- sra
- srai
- srl
- srli
- stb / stbio
- sth / sthio
- stw / stwio
- sub
- subi
- sync
- trap
- wrctl
- xor
- xorhi
- xori
- Referenced Documents
- Document Revision History

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