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

Altera Corporation 7–5
October 2007 Nios II Processor Reference Handbook
Application Binary Interface
Further Examples of Stacks
There are a number of special cases for stack layout, which are described
in this section.
Stack Frame for a Function With alloca()
Figure 7–2 depicts what the frame looks like after alloca() is called.
The space allocated by alloca() replaces the outgoing arguments and the
outgoing arguments get new space allocated at the bottom of the frame.
Implementation note: the Nios II C/C++ compiler maintains a frame
pointer for any function that calls alloca(), even if –fomit-frame-
pointer is specifed.
Figure 7–2. Stack Frame after Calling alloca()
Stack Frame for a Function with Variable Arguments
Functions that take variable arguments still have their first 16-bytes of
arguments arriving in registers r4 through r7, just like other functions.
Implementation note: In order for varargs to work, functions that take
variable arguments will allocate 16 extra bytes of storage on the stack.
They will copy to the stack the first 16-bytes of their arguments from
registers r4 through r7 as shown in Figure 7–3.
higher addresses
lower addresses
space for
outgoing
stack
arguments
sp
sp
space for
outgoing
stack
arguments
memory
allocated
by
alloca()
Before After calling alloca()