Nios II Gen2 プロセッサー・リファレンス・ガイド

ID 683836
日付 10/28/2016
Public
ドキュメント目次

8.5.2. addi

命令 加算 (addi)
演算

rB ←  rA + σ(IMM16) 

アセンブラー構文

addi rB, rA, IMM16

addi r6, r7, -100

説明

16 ビットの即値を符号拡張し、それを rA の値に加算する。結果の合計を rB に格納する。

使用法

キャリー検出 ( 符号なしオペランド ):

addi演算に続いて、符号なしの合計が符号なしのオペランドの 1 つ未満であるかどうかをチェックすることで、MSB のキャリーアウトの検出が可能。キャリービットはレジスターに書き込みが可能、またはキャリー条件に基づいて条件分岐の実行が可能。次のコードで両方の場合を示す。

addi rB, rA, IMM16

cmpltu rD, rB, rA

addi rB, rA, IMM16

bltu rB, rA, label

# The original add operation

# rD is written with the carry bit

# The original add operation

# Branch if carry generated

オーバーフロー検出 ( 符号付きオペランド ):

オーバーフローは、2 つの正の加算後の合計が負の場合、または 2 つの負の加算後の合計が正の場合に検出される。オーバーフロー条件は、次のコードに示すように条件分岐が制御できる。

addi rB, rA, IMM16

xor rC, rB, rA

xorhi rD, rB, IMM16

and rC, rC, rD

blt rC, r0,label

# The original add operation

# Compare signs of sum and rA

# Compare signs of sum and IMM16

# Combine comparisons

# Branch if overflow occurred

例外

なし

命令型

I

命令フィールド

A = オペランド rA のレジスター・インデックス

B = オペランド rB のレジスター・インデックス

IMM16 = 16 ビットの符号付き即値

ビットフィールド
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
A B IMM16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IMM16 0x04