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

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

8.5.1. add

命令 加算 (add)
演算

rC ←  rA + rB

アセンブラー構文

add rC, rA, rB

add r6, r7, r8

説明

rA の値と rB の値を加算し、結果を rC に格納する。符号付き加算と符号なし加算の両方に使用される。

使用法

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

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

add rC, rA, rB

cmpltu rD, rC, rA

add rC, rA, rB

bltu rC, rA, label

# The original add operation

# rD is written with the carry bit

# The original add operation

# Branch if carry generated

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

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

add rC, rA, rB

xor rD, rC, rA

xor rE, rC, rB

and rD, rD, rE

blt rD, r0,label

# The original add operation

# Compare signs of sum and rA

# Compare signs of sum and rB

# Combine comparisons

# Branch if overflow occurred

例外

なし

命令型

R

命令フィールド

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

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

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

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