Niosエンベデッド・プロセッサ プログラマ・リファレンス・マニュアル ver.1.1 Mar01

Similar documents
DDR3 SDRAMメモリ・インタフェースのレベリング手法の活用

ダウンロード方法アルテラのソフトウェアをインストールするためのダウンロード ファイルには以下の種類があります.tar フォーマットのソフトウェアとデバイス ファイルの完全なセット ダウンロードとインストールをカスタマイズするための個別の実行ファイル ディスクに焼いて他の場所にインストールするための

ダウンロード方法 アルテラのソフトウェアをインストールするためのダウンロード ファイルには以下の種類があります.tar フォーマットのソフトウェアとデバイス ファイルがバンドルされたセット ダウンロードとインストールをカスタマイズするための個別の実行ファイル ディスクに焼いて他の場所にインストールす

A-AN pdf

Nios IIプロセッサ・リファレンス・ハンドブック、セクション I. Nios IIプロセッサ Ver. 1.2

MultiPASS B-20 MultiPASS Suite 3.10使用説明書

USB-Blasterダウンロード・ケーブル・ユーザガイド

I

活用ガイド (ハードウェア編)

8B10Bエンコーダ/デコーダMegaCoreファンクション・ユーザガイド

3 SIMPLE ver 3.2: SIMPLE (SIxteen-bit MicroProcessor for Laboratory Experiment) 1 16 SIMPLE SIMPLE 2 SIMPLE 2.1 SIMPLE (main memo

困ったときのQ&A

はしがき・目次・事例目次・凡例.indd

II

ii

活用ガイド (ソフトウェア編)

AN 630: アルテラCPLD におけるリアルタイムISP およびISP クランプ

パソコン機能ガイド

パソコン機能ガイド

活用ガイド (ソフトウェア編)

Javaと.NET

AN 100: ISPを使用するためのガイドライン

main.dvi

エクセルカバー入稿用.indd

困ったときのQ&A



01_.g.r..

SC-85X2取説


<4D F736F F F696E74202D C835B B E B8CDD8AB B83685D>

™…

EPSON ES-D200 パソコンでのスキャンガイド

untitled

ネットワークビデオレコーダー VK-64/VK-16/VK-Lite v2.2 セットアップガイド

SonicWALL SSL-VPN 4000 導入ガイド

これわかWord2010_第1部_ indd

パワポカバー入稿用.indd

これでわかるAccess2010

untitled

i


2



平成18年版 男女共同参画白書

DS-70000/DS-60000/DS-50000

Step2 入門

エレクトーンのお客様向けiPhone/iPad接続マニュアル

PX-673F

名刺ファイリングOCR ユーザーズガイド


インターネット接続ガイド v110

Software Tag Implementation in Adobe Products

たのしいプログラミング Pythonではじめよう!

DS-30

MIFES Ver.7.0 ユーザーズマニュアル

PX-403A

(報告書まとめ 2004/03/  )

PHP4徹底攻略 改訂版

Nios II 簡易チュートリアル

PX-504A

入門ガイド

PX-434A/PX-404A



TH-47LFX60 / TH-47LFX6N

EPSON PX-503A ユーザーズガイド

プロセッサ・アーキテクチャ


ScanFront300/300P セットアップガイド

結婚生活を強める


2

GT-X830

PLDとFPGA

VM-53PA1取扱説明書

e ::= c op(e 1,..., e n ) if e 1 then e 2 else e 3 let x = e 1 in e 2 x let rec x y 1... y n = e 1 in e 2 e e 1... e n (e 1,..., e n ) let (x 1,..., x

GT-X980

ScanFront 220/220P 取扱説明書

Transcription:

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