Nios Version 1.1 2001 3 Altera Corporation A-MNL-NIOSPROG-01/JP
Nios Embedded Processor Programmer s Reference Manual AlteraACEXAPEXAPEX 20KFLEXFLEX 10KEMAX+PLUS IIMegaCoreMegaWizardOpenCoreQuartus Altera Corporation Verilog Cadence Design Systems, Incorporated Java Sun Microsystems Inc. ModelSim Model Technologies MATLAB MathWorks Microsoft Microsoft Corporation Windows Altera products are protected under numerous U.S. and foreign patents and pending applications, maskwork rights, and copyrights. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera s standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera Corporation. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Copyright 2001 Altera Corporation. All rights reserved. ii Altera Corporation
Nios TM Nios Nios Nios CPU Nios ( ) 1 1. Version 1.1 2001 3 Nios - Altera Corporation iii
Web http://www.altera.co.jp 2. 03-3340-9480 045-939-6113 06-6307-7670 PALTEK 045-477-2009 06-6369-4070 World-Wide web http://www.altera.com http://www.altera.co.jp 045-939-6113 06-6307-7670 PALTEK 045-477-2009 06-6369-4070 03-3340-9480 045-939-6113 06-6307-7670 052-202-1024 028-637-4488 PALTEK 045-477-2009 06-6369-4070 E-mail japan@altera.com FTP Site (US) ftp.altera.com World-Wide web http://www.altera.co.jp iv Altera Corporaion
Nios 3 3. : [Save As] : f MAX \maxplus2 d: chiptrip.gdf : 1999 Device Data Book : AN 75 ( ) : t PIA n + 1 (< >) : < >< >.pof : Delete [Option] Quartus II MAX+PLUS II : BitBlaster TM FLEX 10K FLEX 8000 Courier Courier : data1, tdi, input _n : reset_n Courier : c:\max2work\tutorial\chiptrip.gdf Report File (AHDL SUBDESIGN ) (TRI ) Courier 123 ab... v 1 1 r Enter Altera Corporation v
Notes: vi Altera Corporaion
...xi 1....1... 1... 1 Nios CPU... 1... 2... 2... 2 K... 5... 5... 5... 8 ( )... 9 ( )... 10... 12 5/16... 12 --... 14 --... 14 --... 15 --... 15... 16... 16... 17... 17... 17... 18... 18... 18... 19... 19... 19... 20 (TRAP )... 21... 21... 22 : ISTATUS... 23... 23... 23... 23 Altera Corporation vii
... 24... 25... 25... 26 CWP... 26 2.... 35 ABS... 36 ADD... 37 ADDI... 38 AND... 39 ANDN... 40 ASR... 41 ASRI... 42 BGEN... 43 BR... 44 BSR... 45 CALL... 46 CMP... 47 CMPI... 48 EXT16D... 49 EXT16S... 50 EXT8D... 51 EXT8S... 52 FILL16... 53 FILL8... 54 JMP... 55 LD... 56 LDP... 57 LDS... 58 LSL... 59 LSLI... 60 LSR... 61 LSRI... 62 MOV... 63 MOVHI... 64 MOVI... 65 MSTEP... 66 MULL... 67 NEG... 68 NOT... 69 OR... 70 PFX... 71 RDCTL... 72 RESTORE... 73 RLC... 74 RRC... 75 viii Altera Corporation
SAVE... 76 SEXT16... 77 SEXT8... 78 SKP0... 79 SKP1... 80 SKPRNZ... 81 SKPRZ... 82 SKPS... 83 ST... 84 ST16D... 85 ST16S... 86 ST8D... 87 ST8S... 88 STP... 89 STS... 90 STS16S... 91 STS8S... 92 SUB... 93 SUBI... 94 SWAP... 95 TRAP... 96 TRET... 97 WRCTL... 98 XOR... 99 3.... 101 Altera Corporation ix
Notes: x Altera Corporation
4.... iii 5.... iv 6.... v 7. Nios CPU...1 8....3 9....4 10....7 11. 32 Nios CPU 0x0100...8 12. 0x0100 N (32 Nios CPU...9 13. 5/16...13 14. --...14 15. --...14 16. --...15 17. --...16 18. BR...26 19....27 20. 32...30 21. GNU /...33 Altera Corporation xi
Notes: xii Altera Corporation
1 Nios TM SOPC (system-on-a-programmable chip) CPU RISC (PLD) Nios CPU ROM (ESB) 16 bit Nios CPU FLASH 32 Nios CPU 32 Excalibur Nios Nios CPU 27 16 Nios CPU Nios CPU RISC Nios 16 32 Nios CPU 16 32 16 Nios CPU 32 Nios CPU 1 1 8 Nios 16 1 32 Nios 32 16 4. Nios CPU (1 / 2) Nios CPU 32 Nios 16 Nios CPU CPU ( ) 32 16 ALU ( ) 32 16 ( ) 32 16 Altera Corporation 1
4. Nios CPU (2 / 2) Nios CPU 32 Nios CPU 16 Nios CPU 32 17 ( ) ( ) 16 16 1700 1100 ( ) f max (EP20K200E -1) 50 MH 50 MH Cygnus GNUPro C/C++ Nios CPU GNUPro C/C++ Nios C C++ Nios CPU Nios CPU K 32 Nios CPU 32 16 Nios CPU 16 128256512 32 16 2 Altera Corporation
5 4 8 (%r0-%r7) %g0-%g7 (%g0-%g7) 24 (%r8-%r31) 1 5. In %r24-%r31 %i0-%i7 %r16-%r23 %L0-%L7 Out %r8-%r15 %o0-%o7 Global %r0-%r7 %g0-%g7 8 (%i0-%i7) in 8 (%L0-%L7) local 8 (%o0-%o7) out 16 (SAVE )out in local in 6 Altera Corporation 3
6. I N L O C A L O U T G L O B A L. 31 16 15 0 %i7 %r31 SAVE %i6 %r30 %fp -- %i5 %r29 %i4 %r28 %i3 %r27 %i2 %r26 %i1 %r25 %i0 %r24 %L7 %r23 %L6 %r22 %L5 %r21 %L4 %r20 %L3 %r19 STP/LDP 3 ( local) %L2 %r18 STP/LDP 2 ( local) %L1 %r17 STP/LDP 1 ( local) %L0 %r16 STP/LDP 0 ( local) %o7 %r15 %o6 %r14 %sp %o5 %r13 %o4 %r12 %o3 %r11 %o2 %r10 %o1 %r9 %o0 %r8 %g7 %r7 %g6 %r6 %g5 %r5 %g4 %r4 %g3 %r3 %g2 %r2 %g1 %r1 %g0 %r0 10 9 8 7 6 5 4 3 2 1 0 K 32 31 16 15 10 9 8 7 6 5 4 3 2 1 0 PC %ctl9 CLR_IE (WRCTL) STATUS[15] (IE)=0 (RCTL) %ctl8 SET_IE (WRCTL) STATUS[15] (IE)=1 (RCTL) %ctl7 %ctl6 %ctl5 %ctl4 %ctl3 %ctl2 WVALID HI_LIMIT LO_LIMIT %ctl1 ISTATUS %ctl0 STATUS IE IPRI CWP 4 Altera Corporation
K K 11 PFX 0 PFX IMM11 K K PFX 1 PFX 1 PFX 2 CPU PFX SKP K MOVI K 11 15..5 K PFX (PC) PC 0 PC PC 2 (PC PC + 2)BRBSRCALLJMP PC PC 32 Nios CPU 33 16 Nios CPU 17 5 RDCTL WRCTL (%ctl0 %g0 ) STATUS (%ctl0) IE IPRI CWP Altera Corporation 5
(IE) IE IE=1 ( ) IE=0 ( ) TRAP IE=0 SET_IE (%ctl9) CLR_IE (%ctl8) STATUS IE CPU IE 0 ( ) (IPRI) IPRI IPRI 18 IPRI 6 TRAP IPRI IMM6 IPRI 6 IPRI IE=0 TRAP CPU IPRI 63 ( )IPRI IPRI 3 012 ( 3 63) (CWP) CWP CWP 16 CWP 16 CWP SAVE RESTORE WRCTL CWP SAVE RESTORE CWP CPU CWP HI_LIMIT 256 16 WVALID (%ct12) 0x01C1 LO_LIMIT = 1 HI_LIMIT = 14 7 WVALID (%ctl2) 6 Altera Corporation
7 4 7. 1 N V Z C -- 32 31 0 ISTATUS (%ctl1) ISTATUS STATUS STATUS ISTATUS STATUS 18 TRET (return-fromtrap ) ISTATUS STATUS (IE=0) ISTATUS CPU ISTATUS 0 WVALID (%ctl2) HI_LIMIT LO_LIMIT WVALID HI_LIMIT LOW_LIMIT 2 SAVE CWP LOW_LIMIT LOW_LIMIT - 1 ( #1) RESTORE CWP HI_LIMIT HI_LIMIT + 1 ( #2) WVALID / CPU LO_LIMIT 1 HI_LIMIT ( 16) - 2) Altera Corporation 7
CLR_IE(%ctl8) CLR_IE WRCTL STATUS IE (IE 0)CLR_IE RDCTL SET_IE (%ctl9) SET_IE WRCTL STATUS IE (IE 1)SET_IE RDCTL Nios Nios CPU 0 8 9 32 Nios CPU 8. 32 Nios CPU 0x0100 31 24 23 16 15 8 7 0 0x0100 3 2 1 0 0x0104 7 6 5 4 0x0108 11 10 9 8 0x010c 15 14 13 12 9. 0x0100 N (32 Nios CPU) 31 N N-1 0 0x0100 ( ) 0 0x0104 ( ) 1 0x0108 ( ) 2 0x010c ( ) 3 8 Altera Corporation
( ) Nios CPU 32 4 16 2 (16 Nios CPU) 2 (32 Nios CPU) 0 1 LD LD%g3, [%o4] %g3 2 (16 Nios CPU) (32 Nios CPU) (16 Nios CPU) 2 (32 Nios CPU) 0 Nios CPU (16 32 Nios CPU) (32 Nios CPU) EXT8 1 EXT16 1 EXT8d EXT8d %g3,%o4 EXT8d 2 (16 Nios CPU) 2 (32 Nios CPU) 1 Altera Corporation 9
1 1 1: 1 ; 0 1 2 3 ; 0x00001200 0x46 0x49 0x53 0x48 ;32 Nios CPU ; %o4 x00001202 LD %g3,[%o4] EXT8d %g3,%o4 ; %g3 0x1200 ; %g3 0x48534946 ; %g3 %g3 2 ; %g3 0x00000053 ( ) Nios CPU ( 32 Nios CPU ) 1 4 1 (32 Nios CPU) 1 (16 Nios CPU) 2 (32 Nios CPU) 2 2 32 Nios CPU 4 4 1 16 Nios CPU 32 Nios CPU 4 4 2 ST ST8d ST16d (32 Nios CPU ) %r0 (ST8d ) (ST16d ) 10 Altera Corporation
FILL8 FILL16 (32 Nios CPU ) (FILL8 ) (FILL16 ) %r0 1 Altera Corporation 11
2 1 2: 1 -- 32 Nios CPU ; %o4 0x00001203 ; %g3 0x00000054 FILL8 %r0,%g3 ; ( %r0 ) ; %r0 %g3 ; %r0 0x54545454 ST8d [%o4],%r0 ; (2 %r0 ) ; %r0 3 0x1203 0 1 2 3 0x00001200 0x46 0x49 0x53 0x54 5/16 -- -- -- -- 5/16 5 ADDI 5 2 5 0 31 6 16 (32 65535 ) PFX 11 K 5 PFX 16 PFX 5 %hi() %lo() %hi (x) 5 15 11 %lo (x) 0 4 5 12 Altera Corporation
PFX ADDI 1 3: PFX / ADDI ; %g3 0x0041 ADDI %g3,5 ; %g3 5 ; %g3 0x0046 PFX %hi(0x1234) ; 0x1234 11 K ADDI %g3,%lo(0x1234) ; 0x1234 5 %g3 ; K 0x0091 ; ADDI 0x0011 ; 0x1234 ; K 10 5/16 10. 5/16 ADDI AND* ANDN* ASRI CMPI LSLI LSRI MOVI MOVHI OR* SUBI XOR* * ANDANDNORXOR PFX 16 PFX 2 Altera Corporation 13
-- LD ST K 11. -- LD ST -- EXT8dEXT8s EXT16d (32 Nios CPU ) EXT16s (32 Nios CPU ) 1 2 K %r0 FILL8 FILL16 (32 Nios CPU ) 12. -- / ST8s %r0 ST16s* %r0 ST8d %r0 ST16d* %r0 *32 Nios CPU 14 Altera Corporation
-- LDPLDSSTPSTS 1 LDST LDP STP %L0%L1 %L2 %L3 LDS STS %sp (%o6 ) 13. -- PFX LDP %L0%L1%L2%L3-16..15 LDS %sp 0..255 STP %L0%L1%L2%L3-16..15 STS %sp 0..255 -- EXT8dEXT8sEXT16d (32 Nios CPU ) EXT16s (32 Nios CPU ) STS8s STS16s (Nios 32 ) (STS8s ) (STS16s ) %r0 Altera Corporation 15
%sp (%o6 ) %r0 (%g0 %r0 ) FILL8 FILL16 (32 Nios CPU ) 14. -- / STS8s %sp %r0 0..1023 STS16s* %sp %r0 0..511 *32 Nios CPU 2 (BR BSR) 2 (JMP CALL) 2 (TRET TRAP) 5 (SKPSKP0SKP1SKPRz SKPRnz) BR BSR 2 ( BR ) IMM11 BR BSR 44 BR 45 BSR %o7 BSR BR BSR BR BSR SKP BR BSR BR BSR BR BSR BR BSR 26 BR BSR BR BSR 2048 2046 16 Altera Corporation
( ) JMP CALL 2 1 PC CALL %o7 JMP CALL JMP CALL SKP JMP CALL 1 JMP CALL JMP CALL JMP CALL LRET JMP %o7 Nios TRAP TRET 2 96 TRAP 97 TRETJMP CALL TRAP TRET TRAP TRET TRET 5 (SKPsSKP0SKP1SKPRzSKPRnz) (IFs IF0IF1IFRz IFRnz) CPU SKP 5 ( ) ( ) SKP IF (JMPCALL) (BR BSR) PFX (PFX SKPx IF ) 2 PFX Altera Corporation 17
TRAP (TRAP) Nios 64 STATUS IE STATUS IPRI TRAP 3 Nios SAVE RESTORE 64 32 Nios CPU 4 16 Nios CPU 2 Nios CPU n n 2 PC RAM ROM ROM 18 Altera Corporation
Nios CPU irq_number 6 Nios CPU irq (1) Nios CPU IE (1) STATUS IPRI ( ) irq_number 1 irq_number irq Nios SOPC CPU PBM PBM 1 Nios irq_number irq Nios irq irq irq_number ( ) irq Nios CPU 2 Nios (CWP = LO_LIMIT) SAVE SAVE CWP LO_LIMIT SAVE %sp SAVE Altera Corporation 19
SAVE CWP 1 CWP = LO_LIMIT - 1 1 (IE=0) IPRI 1 CPU ( ) HI_LIMIT CWP Nios (SDK) SAVE (WRCTL ) CWP LO_LIMIT CWP LO_LIMIT SAVE (CWP = HI_LIMIT) RESTORE RESTORE CWP HI_LIMIT RESTORE CWP 2 20 Altera Corporation
LO_LIMIT CWP 1 Nios SDK RESTORE (WRCTL ) CWP HI_LIMIT CWP HI_LIMIT RESTORE (TRAP ) TRAP IMM6 IE IPRI TRAP TRAP TRAP TRAP %o7 TRET TRAP 1. STATUS ISTATUS 2. CWP ( SAVE CWP ) Altera Corporation 21
3. IE 0 4. IPRI 6 5. %o7 6. PC 7. TRET %o0..%l7 SAVE SAVE RESTORE LO_LIMIT 1 1 (LO_LIMIT 1 ) SAVE (CWP = 0) (CWP = 0 ) CWP 0 CWP 0 23 22 Altera Corporation
: ISTATUS STATUS ISTATUS STATUS (IE 0 IPRI CWP )STATUS ISTATUS TRET STATUS ISTATUS 1 ISTATUS ( ) ISTATUS ( ) %o7 ( ) %o7 1 TRET TRET %o7 Nios ( ) Altera Corporation 23
SAVE RESTORE (SAVE RESTORE ) TRAP ( TRAP ) %g0..%g7 %i0..%i7 ISTATUS %o7 CWP ( SAVE RESTORE ) ISTATUS ISTATUS CWP CWP LO_LIMIT CWP LO_LIMIT ( RAM ) SAVE RESTORE 2 ISTATUS CWP 24 Altera Corporation
Nios CPU CWP 1 4 Nios CPU Nios CPU RISC WRCTL CWP -- Nios CPU / -- BR BSR -- ALU ALU -- ALU Altera Corporation 25
BRBSRCALLJMP 15 BR 15. BR (a) ADD %g2, %g3 (b) BR (c) ADD %g4, %g5 (d) ADD %g6, %g7 : (e) ADD %g8, %g9 (b) (e) (c) (a)(b)(c)(e) (c) (b) (d) BR BSR CALL IF1 IFO IFRnz IFRz IFS JMP LRET PFX RET SKP1 SKPO SKPRnz SKPRz SKPS TRET TRAP CWP STATUS (%ctl0) WRCTL NOP 26 Altera Corporation
16. 1 X Y Y X X>>n n X e e X<<n n X RA 32 5 a bn X X n (8 ) b0 X = X[7..0] X = X[15..8] b2 X = X[23..16] b3 X = X[31..24] RB 32 5 b hn X X n (16 ) h0 X = X[15..0] h1 X = X[31..16] RP (P ) X & Y AND 4 2 p IMMn n X Y OR K K 11 X Y OR (K PFX ) 0xnn.mm 16 ( ) ~X NOT 1 X:Y {e1, e2} σ(x) : (0x12 : 0x34) = 0x1234 PFX e2 e1 X X Mem32[X] Mem16[X] X ( -X X ) 32 X 16 X X[n] X n (n = 0 LSB) align16(x) X & 0xFF.FE X X[n..m] X n m align32(x) X & 0xFF.FE.FF.FC X C STATUS C (carry) CTLk K 2047 Altera Corporation 27
(1 / 2) RR op6 B A Ri5 op6 IMM5 A Ri4 op6 0 IMM4 A RPi5 op4 P B A Ri6 op5 IMM6 A Ri8 op3 IMM8 A i9 op6 IMM9 0 i10 op6 IMM10 i11 op5 IMM11 Ri1u op6 op3u IMM1u 0 A Ri2u op6 op3u IMM2u A 28 Altera Corporation
(2 / 2) i8v op6 op2v IMM8v 1 i6v op6 op2v 0 0 IMM8v Rw op6 op5w A i4w op6 op5w 0 IMM4w w op6 op5w 0 0 0 0 0 Altera Corporation 29
17. 32 (1 / 3) 000000 ADD RR RA RA + RB : NVCZ 000001 ADDI Ri5 RA RA + (0x00.00 : K: IMM5) : NVCZ 000010 SUB RR RA RA RB : NVCZ 000011 SUBI Ri5 RA RA (0x00.00 : K: IMM5) : NVCZ 000100 CMP RR RA RB : NVCZ 000101 CMPI Ri5 RA (0x00.00 : K: IMM5) : NVCZ 000110 LSL RR RA (RA << RB [4..0]), 000111 LSLI Ri5 RA (RA << IMM5), 001000 LSR RR RA (RA >> RB [4..0]), 001001 LSRI Ri5 RA (R >> IMM5), 001010 ASR RR RA (RA >> RB [4..0]), RA[31] 001011 ASRI Ri5 RA (RA >> IMM5), RA[31] 001100 MOV RR RA RB 001101 MOVI Ri5 RA (0x00.00 : K: IMM5) 001110 AND RR Ri5 001111 ANDN RR Ri5 010000 OR RR Ri5 010001 XOR RR Ri5 010010 BGEN Ri5 RA 2 IMM5 RA RA & {RB, (0x00.00 : K: IMM5)} : NZ RA RA & ~({RB, (0x00.00 : K: IMM5)}) : NZ RA RA {RB, (0x00.00 : K: IMM5)} : NZ RA RA {RB, (0x00.00 : K: IMM5)} : NZ 010011 EXT8d RR RA (0x00.00.00 : bn RA) n = RB[1..0] 010100 SKP0 Ri5 (RA [IMM5] == 0) 010101 SKP1 Ri5 (RA [IMM5] == 1) 30 Altera Corporation
17. 32 (2 / 3) 010110 LD RR RA Mem32 [align32( RB + (σ(k) x 4))] 010111 ST RR Mem32 [align32( RB + (σ(k) x 4))] RA 011000 STS8s i10 bn Mem32 [align32(%sp + IMM10)] bn %r0 n = IMM10[1..0] 011001 STS16s i9 hn Mem32 [align32( %sp + IMM9 x 2)] hn %r0 n = IMM9[0] 011010 EXT16d RR RA (0x00.00 : hn RA) n = RB[1] 011011 MOVHI Ri5 h1 RA (K : IMM5) h0 RA 011100 011101000 EXT8s Ri2u RA (0x00.00.00 : bn RA) n = IMM2u 011101001 EXT16s Rilu RA (0x00.00 : hn RA) n = IMM1u 011101010 011101011 011101100 ST8s Ri2u bn Mem32 [align32(ra + (σ(k) x 4))] bn %r0 n = IMM2u 011101101 ST16s Rilu hn Mem32 [align32(ra + (σ(k) x 4))] hn %r0 n = IMM1u 01111000 SAVE i8v CWP CWP 1; %sp %fp (IMM8v x 4) (old-cwp == LO_LIMIT) {TRAP #1} 01111001 TRAP i6v ISTATUS STATUS; IE 0; CWP CWP 1; IPRI IMM6v; %r15 ((PC + 2) >> 1) ; PC Mem32 [VECBASE + (IMM6v x 4)] x 2 01111100000 NOT Rw RA ~RA 01111100001 NEG Rw RA 0 RA 01111100010 ABS Rw RA RA 01111100011 SEXT8 Rw RA σ( b0 RA) 01111100100 SEXT16 Rw RA σ( h0 RA) 01111100101 RLC Rw C msb (RA); RA (RA << 1) : C : C 01111100110 RRC Rw C RA[0]; RA C : (RA >> 1) : C 01111100111 01111101000 SWAP Rw RA h0 RA : h1 RA 01111101001 01111101010 01111101011 01111101100 1 Altera Corporation 31
17. 32 (3 / 3) 01111101101 RESTORE w CWP CWP + 1(old-CWP == HI_LIMIT) {TRAP #2} 01111101110 TRET Rw PC (RA x 2); STATUS ISTATUS 01111101111 01111110000 ST8d Rw bn Mem32 [align32(ra + (σ(k) x 4))] bn %r0 n = RA[1..0] 01111110001 ST16d Rw hn Mem32 [align32(ra + (σ(k) x 4))] hn %r0 n = RA[1] 01111110010 FILL8 Rw %r0 ( b0 RA : b0 RA : b0 RA : b 0 RA) 01111110011 FILL16 Rw %r0 ( h0 RA : h0 RA) 01111110100 MSTEP Rw If (%r0[31] == 1) then %r0 (%r0 << 1) + RA else %r0 (%r0 << 1) 01111110101 01111110110 SKPRz Rw (RA ==0) 01111110111 SKPS i4w IMM4w 01111111000 WRCTL Rw CTLk RA 01111111001 RDCTL Rw RA CTLk 01111111010 SKPRnz Rw (RA! = 0) 01111111011 01111111100 01111111101 01111111110 JMP Rw PC (RA x 2) 01111111111 CALL Rw R15 ((PC + 4) >> 1); PC (RA x 2) 100000 BR i11 PC PC + ((s(imm11) + 1) x 2) 100001 100010 BSR i11 PC PC + ((s(imm11) + 1) x 2); %r15 ((PC + 4) >> 1) 100010 BSR i11 PC PC + ((s(imm11) + 1) x 2); %r15 ((PC + 4) >> 1) 10011 PFX i11 K IMM11 ( K ) 1010 STP RPi5 Mem32[align32(RP + (σ(k : IMM5) x 4))] RA 1011 LDP RPi5 RA Mem32 [align32(rp + (σ(k : IMM5) x 4))] 110 STS Ri8 Mem32[align32(%sp + (IMM8 x 4) )] RA 111 LDS Ri8 RA Mem32 [align32(%sp + (IMM8 x 4))] 32 Altera Corporation
nios-elf-gcc (GNU ) nios-elf-as (GNU ) 1 18. GNU / : LRET JMP %o7 LRET RET JMP %i7 RET NOP MOV %g0%g0 NOP IF0 %raimm5 SKP1 %raimm5 IF1 %raimm5 SKP0 %raimm5 IFRz %ra SKPRnz %ra IFRnz %ra SKPRnz %ra IFS cc_c SKPS cc_nc IFS cc_nc SKPS cc_c IFS cc_z SKPS cc_nz IFS cc_nz SKPS cc_z IFS cc_mi SKPS cc_pl IFS cc_pl SKPS cc_mi IFS cc_ge SKPS cc_lt IFS cc_lt SKPS cc_ge IFS cc_le SKPS cc_gt IFS cc_gt SKPS cc_le IFS cc_v SKPS cc_nv IFS cc_nv SKPS cc_v IFS cc_ls SKPS cc_hi IFS cc_hi SKPS cc_ls nios-elf-as %lo(x) x 5 x & 0x0000001f %hi(x) x 5..15 (x >> 5) & 0x000007ff %xlo(x) x 16..20 (x >> 1 (x >> 16) & 0x0000001f %xhi(x) x 21..31 (x >> 21) & 0x000007ff x@h x x >> 1 Altera Corporation 33
Notes: 34 Altera Corporation
32 Nios CPU 2 1 Altera Corporation 35
ABS : RA RA : ABS %ra : ABS %r6 : RA RA : : - - - - : : Rw A = RA 0 1 1 1 1 1 0 0 0 1 0 A 36 Altera Corporation
ADD : : RA RA + RB ADD %ra,%rb : ADD %L3,%g0 ; ADD %g0 to %L3 : A B A : : 2 : : N: 31 V: Z: C: RR A = RA B = RB 0 0 0 0 0 0 B A Altera Corporation 37
ADDI : RA RA + (0x00.00 : K : IMM5) : ADDI %ra,imm5 : PFX : ADDI %L5,6 ; add 6 to %L5 PFX : PFX %hi(1000) ADDI %g3,%lo(1000) ; ADD 1000 to %g3 : PFX : A 5 A IMM5 [0..31] PFX : K (11 ) IMM5 (5 ) 5 16 16 (K : IMM5) 32 A : : : : N: 31 V: Z: C: Ri5 A = RA IMM5 = 5 0 0 0 0 0 1 IMM5 A 38 Altera Corporation
AND AND : PFX : RA RA&RB PFX : RA RA & (0x00.00 : K : IMM5) : PFX : AND %ra,%rb PFX : PFX %hi(const) AND %ra,%lo(const) : PFX : AND %g0,%g1 ; %g0 gets %g1 & %g0 PFX : PFX %hi(16383) AND %g0,%lo(16383) ; AND %g0 with 16383 : PFX : RA RB RA PFX : K (11 ) IMM5 (5 ) RB 16 (32 ) RA RA : : - - 2 N: 31 Z: : : RRRi5 A = RA B = RB IMM5 = 5 PFX (RR) : 0 0 1 1 1 0 B A PFX (Ri5) : 0 0 1 1 1 0 IMM5 A Altera Corporation 39
ANDN AND NOT : PFX : RA RA&~RB PFX : RA RA & ~(0x00.00 : K : IMM5) : PFX : ANDN %ra,%rb PFX : PFX %hi(const) ANDN %ra,%lo(const) : PFX : ANDN %g0,%g1 ; %g0 gets %g0 & ~%g1 PFX : PFX %hi(16384) ANDN %g0,%lo(16384) ; clear bit 14 of %g0 : PFX : RA RB RA PFX : K (11 ) IMM5 (5 ) RB 16 32 RA RA : : - - : : N: 31 Z: RRRi5 A = RA B = RB IMM5 = 5 PFX (RR) : 0 0 1 1 1 1 B A PFX (Ri5) : 0 0 1 1 1 1 IMM5 A 40 Altera Corporation
ASR : : : : RA (RA >> RB[4..0]), RA[31] ASR %ra,%rb ASR %L3,%g0 ; %L3 %g0 RA RB RA RB 31..5 RB[4..0] 31 RA RA 2 : : : : - - - - RR A = RA B = RB 0 0 1 0 1 0 B A Altera Corporation 41
ASRI : RA (RA >> IMM5), RA[31] : ASRI %ra,imm5 : ASRI %i5,6 ; %i5 6 : RA IMM5 IMM5 31 RA RA : : : : - - - - Ri5 A = RA IMM5 = 5 0 0 1 0 1 1 IMM5 A 42 Altera Corporation
BGEN : : : : : : : RA 2 IMM5 BGEN %ra,imm5 BGEN %g7,6 ; %g7 64 IMM5 RA 2 RA : - - - - Ri5 A = RA IMM5 = 5 2 0 1 0 0 1 0 IMM5 A Altera Corporation 43
BR : PC PC + ((σ(imm11) + 1) << 1) : BR addr : : : BR MainLoop NOP ; ( ) IMM11 BR ( ) : - - - - : : : BR (BR ) BR (26 ) i11 IMM11 = 11 1 0 0 0 0 IMM11 44 Altera Corporation
BSR : %o7 ((PC + 4) >> 1) PC PC + ((σ(imm11) + 1) << 1) : BSR addr : : : BSR SendCharacter NOP ; ( ) IMM11 BR ( ) BSR + 4 BSR 2 1 %o7 %o7 JMP : - - - - 2 : : : BSR (BSR ) BSR (26 ) i11 IMM11 = 11 1 0 0 0 1 IMM11 Altera Corporation 45
CALL : %o7 ((PC + 4) >> 1) PC (RA << 1) : CALL %ra : CALL %g0 NOP ; ( ) : : RA 1 PC RA 1 CALL 2 1 %o7 %o7 JMP : - - - - : : : CALL (CALL ) CALL (26 ) Rw A = RA 0 1 1 1 1 1 1 1 1 1 1 A 46 Altera Corporation
CMP : : : : RA RB CMP %ra,%rb : : : : CMP %g0,%g1 ; %g0 - %g1 RA RB RA RB N: 31 V: Z: C: RR A = RA B = RB 2 0 0 0 1 0 0 B A Altera Corporation 47
CMPI : RA (0x00.00 : K : IMM5) : CMPI & %ra,imm5 : PFX : CMPI %i3,24 ; %i3 24 PFX : PFX %hi(1000) CMPI %i4,%lo(1000) : PFX : RA IMM5 5 RA PFX : K (11 ) IMM5 (5 ) 5 16 16 (K : IMM5) 32 RA RA : : : : N: 31 V: Z: C: Ri5 A = RA IMM5 = 5 0 0 0 1 0 1 IMM5 A 48 Altera Corporation
EXT16D ( ) : : : : RA (0x00.00 : hn RA) n = RB[1] EXT16d %ra,%rb LD %i3,[%i4] ; get 32 bits from [%i4 & 0xFF.FF.FF.FC] EXT16d %i3,%i4 ; %i4 short int RA 2 RB 1 RA 15..0 31..16 2 : : : : - - - - RR A = RA B = RB 0 1 1 0 1 0 B A Altera Corporation 49
EXT16S ( ) : : : : RA (0x00.00 : hn RA) n=imm1 EXT16s %ra,imm1 EXT16s %L3,1 ; %L3 short int RA 2 1 IMM1 RA 15..0 31..16 : : : : - - - - Rilu A = RA IMM1 = 1 0 1 1 1 0 1 0 0 1 IMM1 0 A 50 Altera Corporation
EXT8D ( ) : : : : RA (0x00.00.00 : bn RA) n = RB[1..0] EXT8d %ra,%rb LD %g4,[%i0] ; [%i0 & 0xFF.FF.FF.FC] 32 EXT8d %g4,%i0 ; %i0 RA 4 RB 1..0 ( 3 RA ) RA 7..0 31..8 2 : : : : - - - - RR A = RA B = RB 0 1 0 0 1 1 B A Altera Corporation 51
EXT8S ( ) : : : : RA (0x00.00.00 : bn RA) n = IMM2 EXT8s %ra,imm2 EXT8s %g6,3 ; %g6 3 RA 4 IMM2 ( 3 RA ) RA 7..0 31..8 : : : : - - - - Ri2u A = RA IMM2 = 2 0 1 1 1 0 1 0 0 0 IMM2 A 52 Altera Corporation
FILL16 : : : : R0 h0 RA : h0 RA) FILL16 %r0,%ra FILL16 %r0,%i3 ; %r0 %i3[0..15] 2 ; %r0 RA %r0 %r0 FILL 2 : : : : - - - - Rw A = RA 0 1 1 1 1 1 1 0 0 1 1 A Altera Corporation 53
FILL8 : : : : R0 b0 RA : b0 RA : b0 RA : b0 RA) FILL8 %r0,%ra FILL8 %r0,%o3 ; %r0 %o3[0..7] 4 ; %r0 RA %r0 4 %r0 FILL : : : : - - - - Rw A = RA 0 1 1 1 1 1 1 0 0 1 0 A 54 Altera Corporation
JMP : PC (RA << 1) : JMP %ra : : : : : : JMP %o7 ; NOP ; ( ) (RA << 1) RA : - - - - JMP (JMP ) JMP Rw A = RA 2 0 1 1 1 1 1 1 1 1 1 0 A Altera Corporation 55
LD 32 : : : : : : : PFX : RA Mem32[align32(RB)] PFX : RA Mem32[align32(RB + σ(k) x 4))] LD %ra,[%rb] PFX : LD %g0,[%i3] ; [%i3] %g0 PFX : PFX 7 ; LD %g0,[%i3] ; [%i3+28] %g0 PFX : RA 32 RB 31..2 (RB 2 LSB ) PFX : K RB ( 1..0 ) : - - - - RR A = RA B = RB 0 1 0 1 1 0 B A 56 Altera Corporation
LDP 32 ( ) : : : : : : : PFX : RA Mem32[align32(RP + (IMM5 x 4))] PFX : RA Mem32[align32(RP + (σ(k : IMM5) x 4))] LDP [%rp,imm5],%ra PFX : LDP %o3,[%l2,3] ; [%L2 + 12] %o3 ; 2 %L0%L1 ;%L2%L3 PFX : PFX %hi(100) LDP %o3,[%l2,%lo(100)] ; [%L2 + 400] %o3 PFX : RA 32 RP 31..2 (RP 2 LSB ) IMM5 5 LD 4 5 4 %L0%L1%L2%L3 PFX : 16 11 K IMM5 (5 ) 16 (K : IMM5) 32 4 RP 31..2 : - - - - RPi5 A = RA IMM5 = 5 P = 16 2 1 0 1 1 P IMM5 A Altera Corporation 57
LDS 32 ( ) : RA Mem32[align32(%sp + (IMM8 x 4))] : : : : LDS %ra,[%sp,imm8] LDS %o1,[%sp,3] ; +12 %o1 ; 2 %sp RA 32 %sp 31..2 (%sp 2 LSB ) IMM8 8 %o6 ( %sp) LDS %sp 1K : - - - - : : Ri8 A = RA IMM8 = 8 1 1 1 IMM8 A 58 Altera Corporation
LSL : : : : RA (RA << RB[4..0]), LSL %ra,%rb LSL %L3,%g0 ; %g0 %L3 RA RB [4..0] (RB 31..5 ) 2 : : - - - - : : RR A = RA B = RB 0 0 0 1 1 0 B A Altera Corporation 59
LSLI : : : : RA (RA << IMM5), LSLI %ra,imm5 LSLI %i1,6 ; 6 %i1 RA IMM5 : : : : - - - - Ri5 A = RA IMM5 = 5 0 0 0 1 1 1 IMM5 A 60 Altera Corporation
LSR : : : : RA (RA >> RB[4..0]), LSR %ra,%rb LSR %L3,%g0 ; %g0 %L3 RA RB [4..0] ( RB [31..5] ) 2 : : - - - - : : RR A = RA B = RB 0 0 1 0 0 0 B A Altera Corporation 61
LSRI : : : : RA (RA >> IMM5), LSRI %ra,imm5 LSRI %g1,6 ; 6 %g1 RA IMM5 : : : : - - - - Ri5 A = RA IMM5 = 5 0 0 1 0 0 1 IMM5 A 62 Altera Corporation
MOV : : : : : RA RB MOV %ra,%rb MOV %o0,%l3 ; %o0 %L3 RB RA : - - - - 2 : : RR A = RA B = RB 0 0 1 1 0 0 B A Altera Corporation 63
MOVHI : : : : : : : h1 RA (K : IMM5), h0 RA MOVHI %ra,imm5 PFX : MOVHI %g3,23 ; %g3 16 23 PFX : PFX %hi(100) MOVHI %g3,%lo(100) ; %g3 16 100 PFX : RA ( 31..16) IMM5 ( 15..0) PFX : K (11 ) IMM5 (5 ) 5 16 16 (K : IMM5) RA ( 31..16) ( 15..0) : - - - - Ri5 A = RA IMM5 = 5 0 1 1 0 1 1 IMM5 A 64 Altera Corporation
MOVI : : RA (0x00.00 : K : IMM5) MOVI %ra,imm5 : PFX : MOVI %o3,7 ; 7 %o3 PFX : PFX %hi(301) MOVI %o3,%lo(301) ; 301 %o3 : PFX : IMM5 5 ( [0..31]) RA PFX : (K : IMM5) 16 ( [0..65535]) RA : : - - - - 2 : : Ri5 A = RA IMM5 = 5 0 0 1 1 0 1 IMM5 A Altera Corporation 65
MSTEP : If (%r0[31] = = 1) then %r0 (%r0 << 1) + RA else %r0 (%r0 << 1) : MSTEP %ra : : : MSTEP %g1 ; 1 %r0 RA %r0 RA 16 x 16 32 %r0 %r1 %r0 SWAP %r0 ; MSTEP %r1 MSTEP %r1 MSTEP %r1 16 MSTEP MSTEP %r1 ;%r0 32 : - - - - : : Rw A = RA 0 1 1 1 1 1 1 0 1 0 0 A 66 Altera Corporation
MULL : : R0 < -- (R0 & 0x0000.ffff) x (RA & 0x0000.ffff) MUL %ra : MUL %i5 : %r0 %ra %r0 32 2 16 32 2 16 32 : : - - - - : : Rw A = RA 2 0 1 1 1 1 1 1 0 1 0 1 A Altera Corporation 67
NEG : RA 0 RA : NEG %ra : NEG %o4 : RA RA 2 : : - - - - : : Rw A = RA 0 1 1 1 1 1 0 0 0 0 1 A 68 Altera Corporation
NOT : RA ~RA : NOT %ra : NOT %o4 : RA : : - - - - 2 : : Rw A = RA 0 1 1 1 1 1 0 0 0 0 0 A Altera Corporation 69
OR OR : PFX : RA RA RB PFX : RA RA (0x00.00 : K : IMM5) : PFX : OR %ra,%rb PFX : PFX %hi(const) OR %ra,%lo(const) : PFX : OR %i0,%i1 ; OR %i1 into %i0 PFX : PFX %hi(3333) OR %i0,%lo(3333) ; OR %i0 with 3333 : PFX : RA RB RA PFX : K (11 ) IMM5 (5 ) RB 16 32 RA RA : : - - : : N: 31 Z: RRRi5 A = RA B = RB IMM5 = 5 PFX (RR) : 0 1 0 0 0 0 B A PFX (Ri5) : 0 1 0 0 0 0 IMM5 A 70 Altera Corporation
PFX : K IMM11 (K ) : PFX IMM11 : : : : : PFX 3 ; K 11 IMM11 K PFX K 2 PFX : - - - - i11 IMM11 = 11 2 1 0 0 1 1 IMM11 Altera Corporation 71
RDCTL : : : : : : : RA CTLk RDCTL %ra PFX : RDCTL %g7 ; STATUS (%ctl0) %g7 PFX : PFX 2 RDCTL %g7 ; WVALID (%ctl2) %g7 PFX : STATUS (%ctl0) RA PFX : K RA 5 : - - - - Rw A = RA 0 1 1 1 1 1 1 1 0 0 1 A 72 Altera Corporation
RESTORE : CWP CWP + 1 (old-cwp == HI_LIMIT) TRAP #2 : RESTORE : : : RESTORE ; CWP 1 RESTORE CWP HI_LIMIT (WVALID ) (TRAP #2) : - - - - 2 : : w 0 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 Altera Corporation 73
RLC : : : : C RA[31] RA (RA << 1) : C RLC %ra RLC %i4 ; %i4 1 RA 1 : : - - - : : C: RA 31 Rw A = RA 0 1 1 1 1 1 0 0 1 0 1 A 74 Altera Corporation
RRC : : : : C RA[0] RA C:(RA>>1) RRC %ra RRC %i4 ; %i4 1 RA 1 2 PFX : : : - - - : : C: RA 0 Rw A = RA 0 1 1 1 1 1 0 0 1 1 0 A Altera Corporation 75
SAVE : CWP CWP 1 %sp %fp (IMM8 x 4) (old-cwp == LO_LIMIT) TRAP #1 : SAVE %sp,-imm8 : : : SAVE %sp,-23 ; ; %sp CWP 1 SAVE CWP LO_LIMIT (WVALID ) (TRAP #1) ( ) %sp %fp IMM8 4 %fp ( ) %sp SAVE : - - - - : : i8v IMM8 = 8 0 1 1 1 1 0 0 0 IMM8 76 Altera Corporation
SEXT16 16 : : : : : RA σ( h0 RA) SEXT16 %ra SEXT16 %g3 ; short long RA 16..31 RA 15 : - - - - 2 : : Rw A = RA 0 1 1 1 1 1 0 0 1 0 0 A Altera Corporation 77
SEXT8 8 : : : : : : : RA σ( b0 RA) SEXT8 %ra SEXT8 %o3 ; long RA 8..31 RA 7 : - - - - Rw A = RA 0 1 1 1 1 1 0 0 0 1 1 A 78 Altera Corporation
SKP0 0 : if (RA[IMM5] == 0) then begin if (Mem16[PC + 2] is PFX) then PC PC + 6 else PC PC + 4 end : SKP0 %ra,imm5 : : : SKP0 %o3, 7 ; %o3 7 0 ADDI %g0, 1 ; 7 1 RA[IMM5] 0 PFX PFX : - - - - 2 : : Ri5 A = RA IMM5 = 5 0 1 0 1 0 0 IMM5 A Altera Corporation 79
SKP1 1 : if (RA[IMM5] == 1) then begin if (Mem16[PC + 2] is PFX) then PC PC + 6 else PC PC + 4 end : SKP1 %ra,imm5 : : : SKP1 %o3,21 ; %o3 21 1 ADDI %g0, 1 ; 0 RA[IMM5] 1 PFX PFX : - - - - : : Ri5 A = RA IMM5 = 5 0 1 0 1 0 1 IMM5 A 80 Altera Corporation
SKPRNZ 0 : if (RA! = 0) then begin if (Mem16[PC + 2] is PFX) then PC PC + 6 else PC PC + 4 end : SKPRnz %ra : SKPRnz %g3 BSR SendIt ; %g3 0 NOP ; ( ) : : RA PFX PFX : - - - - 2 : : Rw A = RA 0 1 1 1 1 1 1 1 0 1 0 A Altera Corporation 81
SKPRZ 0 : if (RA = = 0) then begin if (Mem16[PC + 2] is PFX) then PC PC + 6 else PC PC + 4 end : SKPRz %ra : SKPRz %o3 BSR SendIt ; %o3 0 NOP ; ( ) : : RA PFX PFX : - - - - : : Rw A = RA 0 1 1 1 1 1 1 0 1 1 0 A 82 Altera Corporation
SKPS : : : : if (condition IMM4 is true) then begin if (Mem16[PC + 2] is PFX) then PC PC + 6 else PC PC + 4 end SKPS cc_imm4 SKPS cc_ne BSR SendIt ; Z NOP ; ( ) PFX PFX : : cc_c 0x0 (C) cc_nc 0x1 (not C) cc_z 0x2 (Z) cc_nz 0x3 (not Z) cc_mi 0x4 (N) cc_pl 0x5 (not N) cc_ge 0x6 (not (N xor V)) cc_lt 0x7 (N xor V) cc_le 0x8 (Z or (N xor V)) cc_gt 0x9 (Not (Z or (N xorv))) cc_v 0xa (V) cc_nv 0xb (not V) cc_la 0xc (C or Z) cc_hi 0xd (not (C or Z)) : : : cc_cs = cc_c cc_eq = cc_z cc_n = cc_mi cc_vs = cc_v cc_cc = cc_nc cc_ne = cc_nz cc_vc = cc_nv cc_p = cc_pl if skps cc_eq if equal i4w IMM4 = 4 2 0 1 1 1 1 1 1 0 1 1 1 0 IMM4 Altera Corporation 83
ST 32 : : : : : : : PFX : Mem32[align32(RB)] RA PFX : Mem32[align32(RB + (σ(k) x 4))] RA ST [%rb],%ra PFX : ST [%g0],%i3 ; %g0 %i3 PFX : PFX 3 ; ST [%g0],%i3 ; %g0 + 12 PFX : RA 32 RB 31..2 (RB 2 LSB ) PFX : K RB ( 1..0 ) : - - - - RR A = RA B = RB 0 1 0 1 1 1 B A 84 Altera Corporation
ST16D 16 ( ) : : : : : : : PFX : hn Mem32[align32(RA)] hn %r0 n = RA[1] PFX : hn Mem32[align32(RA + (σ(k) x 4))] hn %r0 n = RA[1] ST16d [%ra],%r0 PFX : FILL16 %r0,%g7 ; %r0 %g7 short ST16d [%o3],%r0 ; %r0 %o3[1] short int [%o3] ; 2 %r0 PFX : FILL16 %r0,%g3 PFX 5 ST16d [%o3],%r0 ; 20 PFX : RA %r0 2 RA[1] %r0 ( 1 )RA[0] ST16d FILL16 2 %rx 15..0 RA FILL16 %r0,%rx ST16d [%ra],%r0 PFX : K RA : - - - - Rw A = RA 2 0 1 1 1 1 1 1 0 0 0 1 A Altera Corporation 85
ST16S 16 ( ) : : : : : : : PFX : hn Mem32[align32(RA)] hn %r0 n =IMM1 PFX : hn Mem32[align32(RA + (σ(k) x 4))] hn %r0 n =IMM1 ST16s [%ra],%r0,imm1 ST16s [%g8],%r0,1 PFX : %r0 2 (RA[31..2] + IMM1 x 2) 2 RA[1..0] IMM2 %r0 ( #1 ) ST16s FILL16 %rx 15..0 (RA + Y x 2) (RA ) FILL16 %r0,%rx PFX Y>>2 ST16s [%ra],%r0,(y >>1)&1 PFX : K IMM1 12 (K : IMM1) (2 ) 32 ST : - - - - Rilu A = RA IMM1 = 1 0 1 1 1 0 1 1 0 1 IMM1 0 A 86 Altera Corporation
ST8D 8 ( ) : : : :7 : : : PFX : bn Mem32[align32(RA)] bn %r0 n = RA[1..0] PFX : bn Mem32[align32(RA + σ(k) x 4)]] bn %r0 n = RA[1..0] ST8d [%ra],%r0 PFX : FILL8 %r0,%g7 ; %r0 %g7 ST8d [%o3],%r0 ; %r0 %o3[1..0] ;[%o3] ; 2 %r0 PFX : FILL8 %r0,%g3 PFX 5 ST8d [%o3],%r0 ; 20 PFX : %r0 4 RA 2 RA[1..0] %r0 ( 3 ) ST8d FILL8 2 %rx 7..0 RA FILL8 %r0,%rx ST8d [%ra],%r0 PFX : K RA : - - - - Rw A = RA 2 0 1 1 1 1 1 1 0 0 0 0 A Altera Corporation 87
ST8S 8 ( ) : : : : : : : PFX : bn Mem32[align32(RA)] bn %r0 n = IMM2 PFX : bnmem32[align32(ra + (σ(k) x 4))] n = IMM2 ST8s [%ra],%r0,imm2 PFX : MOVI %g4,12 ST8s [%g4],%r0,3 ; %r0 mem[15] PFX : PFX 9 ST8s [%g4],%r0,2 ; %r0 2 ; mem[%g4 + 36 + 2] PFX : %r0 4 (RA[31..2] + IMM2) 2 RA[1..0] IMM2 %r0 ( 3 ) ST8s FILL8 %rx 7..0 (RA + Y ) (RA ) FILL8 %r0,%rx PFX Y>>2 ST8s [%ra],%r0,y &3 PFX : 13 K IMM2 (K : IMM2) 32 ST : - - - - Ri2u A = RA IMM2 = 2 0 1 1 1 0 1 1 0 0 IMM2 A 88 Altera Corporation
STP 32 ( ) : : : : : : : PFX : Mem32[align32(RP + (IMM5 x 4))] PFX : Mem32[align32(RP + (σ(k : IMM5) x 4))] STP [%rp,imm5],%ra PFX : STP [%L2,3],%g3 ; %g3 [%L2 + 12] PFX : PFX %hi(102) STP [%L2,%lo(102)],%g3 ; %g3 ;[%L2 + 408] PFX : RA 32 RP [31..2] (RP 2 LSB ) IMM5 5 ST 4 5 4 %L0%L1%L2%L3 PFX : 16 11 K IMM5 (5 ) 16 (K : IMM5) 32 4 RP 31..2 : - - - - RPi5 A = RA IMM5 = 5 P = 16 2 1 0 1 0 P IMM5 A Altera Corporation 89
STS 32 ( ) : : : : : : : Mem32[align32(%sp + (IMM8 x 4))] RA STS [%sp,imm8],%ra STS [%sp,17],%i5 ; %i5 + 68 ; 1 %sp RA 32 %sp 31..2 (%sp 2 LSB ) IMM8 8 %o6 ( %sp) STS %sp 1K : - - - - Ri8 A = RA IMM8 = 8 1 1 0 IMM8 A 90 Altera Corporation
STS16S 16 ( ) : : : : : : : hn Mem32[align32(%sp + IMM9 x 2)] hn %r0 n = IMM9[0] STS16s [%sp,imm9],%r0 STS16s [%sp,7],%r0 ; %sp %r0 %r0 2 (%sp + IMM9x2) IMM9 %r0 ( 1 ) STS16s FILL16 1K 16 %rx 15..0 %sp Y (%sp ) FILL16 %r0,%rx STS16s [%sp,y],%r0 : i9 - - - - IMM9 = 9 2 0 1 1 0 0 1 IMM9 0 Altera Corporation 91
STS8S 8 ( ) : : : : : : : bn Mem32[align32(%sp + IMM10)] bn %r0 n = IMM10[1..0] STS8s [%sp,imm10],%r0 STS8s [%sp,13],%r0 ; %sp %r0 %r0 4 (%sp + IMM10) IMM10 2 %r0 ( 3 ) STS8s FILL8 1K %rx 7..0 %sp Y (%sp ) FILL8 %r0,%rx STS8s [%sp,y],%r0 : - - - - i10 IMM10 = 10 0 1 1 0 0 0 IMM10 92 Altera Corporation
SUB : : RA RA RB SUB %ra,%rb : SUB %i3,%g0 ; %i3 %g0 : RB RA RA : : 2 : : N: 31 V: Z: C: RR A = RA B = RB 0 0 0 0 1 0 B A Altera Corporation 93
SUBI : RA RA (0x00.00 : K : IMM5) : subi %rb,imm5 : PFX : SUBI %L5,6 ; %L5 6 PFX : PFX %hi(1000) SUBI %o3,%lo(1000) ; %o3 1000 : PFX : RA [0..31] PFX : K (11 ) IMM5 (5 ) 5 16 16 (K : IMM5) 32 A : : : : N: 31 V: Z: C: Ri5 A = RA IMM5 = 5 0 0 0 0 1 1 IMM5 A 94 Altera Corporation
SWAP : : : : : : : RA h0 RA : h1 RA SWAP %ra SWAP %g3 ; %g3 2 RA 2 16 ( ) RA : - - - - Rw A = RA 2 0 1 1 1 1 1 0 1 0 0 0 A Altera Corporation 95
TRAP : : : : : : : : ISTATUS STATUS IE 0 CWP CWP 1 IPRI IMM6 %o7 ((PC + 2) >> 1) PC Mem32[VECBASE + (IMM6 x 4)] << 1 TRAP IMM6 TRAP 0 ; CWP 1 (IE 0) STATUS ISTATUS IMM6 VECBASE (VECBASE ) 32 (VECBASE + IMM6 x 4) 2 PC TRAP %o7 %o7 TRET TRAP BSR/CALL TRAP STATUS IE 0 TRAP : - - - - TRAP TRAP TRET TRAP i6v IMM6 = 6 0 1 1 1 1 0 0 1 0 0 IMM6 96 Altera Corporation
TRET : PC (RA << 1) STATUS ISTATUS : TRET %ra : : : TRET %o7 ; (RA << 1) TRAP %o7 ISTATUS STATUS (CWP STATUS ) : - - - - 2 : : Rw A = RA 0 1 1 1 1 1 0 1 1 1 0 A Altera Corporation 97
WRCTL : : : : : : : CTLk RA WRCTL %ra PFX : WRCTL %g7 ; STATUS %g7 NOP ; PFX : PFX 1 WRCTL %g7 ; ISTATUS %g7 PFX : RA STATUS STATUS WRCTL NOP PFX : K RA WRCTL STATUS RA [3..0] WRCTL WRCTL Rw A = RA 0 1 1 1 1 1 1 1 0 0 0 A 98 Altera Corporation
XOR : PFX : RA RA ΡΒ PFX : RA RA (0x00.00:K:IMM5) : PFX : XOR %ra,%rb PFX : PFX %hi(const) XOR %ra,%lo(const) : PFX : XOR %g0,%g1 ; %g1 %g0 XOR PFX : PFX %hi(16383) XOR %o0,%lo(16383) ; %o0 16383 XOR : PFX : RA RB RA PFX : K (11 ) IMM5 (5 ) RB 16 32 RA RA : : - - 2 : : N: 31 Z: RRRi5 A = RA B = RB IMM5 = 5 PFX (RR) 0 1 0 0 0 1 B A PFX (Ri5) 0 1 0 0 0 1 IMM5 A Altera Corporation 99
Notes: 100 Altera Corporation
Numerics 16 77 16 ( ) 85 16 ( ) 91 16 ( ) 86 32 84 32 ( ) 90 32 ( ) 89 5/16 12 8 78 8 ( ) 87 8 ( ) 92 8 ( ) 88 A ABS 36 ADD 37 ADDI 38 AND 39 ANDN 40 ASR 41 ASRI 42 B BGEN 43 BR 44 BSR 45 C CALL 46 CLR_IE(%ctl8) 8 CMP 47 CMPI 48 CWP 26 E EXT16D 49 EXT16S 50 EXT8D 51 EXT8S 52 F FILL16 53 FILL8 54 G GNU / 34 I ISTATUS (%ctl1) 7 J JMP 55 K K 5 L LD 56 LDP 57 LDS 58 LSL 59 LSLI 60 LSR 61 LSRI 62 M MOV 63 MOVHI 64 MOVI 65 MSTEP 66 MULL 67 3 Altera Corporation 101
N NEG 68 Nios CPU 1 Nios CPU 25 NOT 69 O OR 70 P PFX 71 R RDCTL 72 RESTORE 73 RLC 74 RRC 75 S SAVE 76 SET_IE (%ctl9) 8 SEXT16 77 SEXT8 78 SKP0 79 SKP1 80 SKPRnz 81 SKPRz 82 SKPS 83 ST 84 ST16d 85 ST16s 86 ST8d 87 ST8s 88 STP 89 STS 90 STS16s 91 STS8s 92 SUB 93 SUBI 94 SWAP 95 T TRAP 96 TRET 97 W WRCTL 98 WVALID (%ctl2) 7 X XOR 99 12 (IE) 6 (IPRI) 6 19 (CWP) 6 23 23 75 74 37 93 5 98 46 45 55 68 83 7 17 67 66 : ISTATUS 23 72 17 -- 15 16 65 38 94 48 64 60 42 62 (TRAP ) 21 97 102 Altera Corporation
17 19 ( ) 50 ( ) 49 53 54 ( ) 52 ( ) 51 25 25 2 47 59 99 OR 70 AND 39 AND NOT 40 43 27 24 -- 15 -- 14 71 4 16 5 44 26 41 61 96 2 28 ( ) 9 ( ) 10 32 56 32 ( ) 58 32 ( ) 57 8 73 76 23 18 18 21 18 0 82 0 81 2 19 20 22 3 95 0 79 1 80 63 69 3 Altera Corporation 103
Notes: 104 Altera Corporation