インテルのみ表示可能 — GUID: iga1409765303279
Ixiasoft
インテルのみ表示可能 — GUID: iga1409765303279
Ixiasoft
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 |