Visible to Intel only — GUID: iga1409765303279
Ixiasoft
Visible to Intel only — GUID: iga1409765303279
Ixiasoft
8.5.2. addi
Instruction | addi |
Operation | rB ← rA + σ(IMM16) |
Assembler Syntax | addi rB, rA, IMM16 |
Example | addi r6, r7, -100 |
Description | Sign-extends the 16-bit immediate value and adds it to the value of rA. Stores the sum in rB. |
Usage | Carry Detection (unsigned operands): Following an addi operation, a carry out of the MSB can be detected by checking whether the unsigned sum is less than one of the unsigned operands. The carry bit can be written to a register, or a conditional branch can be taken based on the carry condition. The following code shows both cases: 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 Overflow Detection (signed operands): An overflow is detected when two positives are added and the sum is negative, or when two negatives are added and the sum is positive. The overflow condition can control a conditional branch, as shown in the following code: 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 |
Exceptions | None |
Instruction Type | I |
Instruction Fields | A = Register index of operand rA B = Register index of operand rB IMM16 = 16-bit signed immediate value |
Bit Fields | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |