4.6.1. B and BL

Branch, and Branch with Link.


B{cond} label
BL{cond} label



is an optional condition code (see Conditional execution).


is a program-relative expression. See Register-relative and program-relative expressions for more information.


The B instruction causes a branchto label.

The BL instruction copies the address of the next instruction into r14 (lr, the link register), and causes a branch to label.

Machine-level B and BL instructions have a range of ±32Mb from the address of the current instruction. However, you can use these instructions even if label is out of range. Often you do not know where label is placed by the linker. When necessary, the ARM linker adds code to allow longer branches (see The ARM linker chapter in ADS Linker and Utilities Guide). The added code is called a veneer.


These instructions are available in all versions of the ARM architecture.


    B       loopA
    BLE     ng+8
    BL      subC
    BLLT    rtX
Copyright © 2000, 2001 ARM Limited. All rights reserved.ARM DUI 0068B