subf
Subtract from - 7C 00 00 50
subf

Instruction Syntax

Mnemonic Format Flags
subf rD,rA,rB OE = 0, Rc = 0
subf. rD,rA,rB OE = 0, Rc = 1
subfo rD,rA,rB OE = 1, Rc = 0
subfo. rD,rA,rB OE = 1, Rc = 1

Instruction Encoding

0
1
1
1
1
1
D
D
D
D
D
A
A
A
A
A
B
B
B
B
B
OE
0
1
0
1
0
0
0
0
0
Rc

Field Bits Description
Primary Opcode 0-5 011111 (0x1F)
rD 6-10 Destination register
rA 11-15 Source register A
rB 16-20 Source register B
OE 21 Overflow Exception
XO 22-29 40 (Extended opcode)
Rc 30-31 Record Condition Register

Operation

rD ← (rB) - (rA)

The value in rA is subtracted from the value in rB, and the result is placed into rD.

Note: The subf instruction performs subtraction. If OE = 1, overflow exceptions are enabled. If Rc = 1, the condition register is updated.

Affected Registers

Condition Register (CR0 field)

(if Rc = 1)

Note: CR0 field may not reflect the infinitely precise result if overflow occurs (see XER below).

XER (Exception Register)

(if OE = 1)

For more information on condition codes see Section 2.1.3, "Condition Register," and Section 2.1.5, "XER Register," in the PowerPC Microprocessor Family: The Programming Environments manual.

Examples

Basic Subtraction

subf r3, r1, r2     # r3 = r2 - r1
subf. r3, r1, r2    # Same as above, but also sets condition register

Simple Arithmetic

# Subtract two values and store result
lwz r4, 0(r10)     # Load first value
lwz r5, 4(r10)     # Load second value  
subf r6, r4, r5     # Subtract values

Overflow Detection

subfo r3, r1, r2    # Subtract with overflow exception enabled
# If overflow occurs, an exception is raised

Related Instructions

subfc, subfe, subfic, subfme, subfze

Back to Index