user manual

MicroBlaze Processor Reference Guide www.xilinx.com 73
UG081 (v6.0) June 1, 2006 1-800-255-7778
Instructions
R
add
Arithmetic Add
Description
The sum of the contents of registers rA and rB, is placed into register rD.
Bit3 of theinstruction (labeledas K inthe figure)is set toa onefor themnemonic addk.Bit
4 of the instruction (labeled as C in the figure) is set to a one for the mnemonic addc. Both
bits are set to a one for the mnemonic addkc.
When an add instruction has bit 3 set (addk, addkc), the carry flag will Keep its previous
value regardless of the outcome of the execution of the instruction. If bit 3 is cleared (add,
addc), then the carry flag will be affected by the execution of the instruction.
When bit 4 of the instruction is set to a one (addc, addkc), the content of the carry flag
(MSR[C]) affects the execution of the instruction. When bit 4 is cleared (add, addk), the
contentofthecarryflag doesnotaffecttheexecution oftheinstruction(providinganormal
addition).
Pseudocode
if C = 0 then
(rD) (rA) + (rB)
else
(rD) (rA) + (rB) + MSR[C]
if K = 0 then
MSR[C] CarryOut
Registers Altered
rD
MSR[C]
Latency
1 cycle
Note
The C bit in the instruction opcode is not the same as the carry bit in the MSR.
The “add r0, r0, r0” (= 0x00000000) instruction is never used by the compiler and usually
indicatesuninitialized memory. If youareusing illegal instruction exceptions youcan trap
these instructions by setting the MicroBlaze option C_OPCODE_0x0_ILLEGAL=1
add
rD, rA, rB Add
addc
rD, rA, rB Add with Carry
addk
rD, rA, rB Add and Keep Carry
addkc
rD, rA, rB Add with Carry and Keep Carry
0 0 0 K C 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0
0 6 11 16 21 31