A branch instruction can be either an "unconditional branch", which always results in branching, or a "conditional branch", which may or may not cause branching depending on some condition. Also, depending on how it specifies the address of the new instruction sequence (the "target" address), a branch instruction is generally classified as "direct", "indirect" or "relative", meaning that the instruction contains the target address, or it specifies where the target address is to be found (e.g., a register or memory location), or it specifies the difference between the current and target addresses.