Instructions

add

Arithmetic Add

 

 

 

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

R

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

Description

The sum of the contents of registers rA and rB, is placed into register rD.

Bit 3 of the instruction (labeled as K in the figure) is set to a one for the mnemonic 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 content of the carry flag does not affect the execution of the instruction (providing a normal 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 indicates uninitialized memory. If you are using illegal instruction exceptions you can trap these instructions by setting the MicroBlaze option C_OPCODE_0x0_ILLEGAL=1

MicroBlaze Processor Reference Guide

www.xilinx.com

73

UG081 (v6.0) June 1, 2006

1-800-255-7778

 

Page 73
Image 73
Xilinx EDK 8.2i manual Add, Description, Registers Altered