is an optional condition code.
is an optional instruction width specifier to force the use of a 32-bit
Binstruction in Thumb.
is a PC-relative expression.
B instruction causes a branch to label.
Instruction availability and branch ranges
The following table shows the
that are available in ARM and Thumb state. Instructions that are
not shown in this table are not available. Notes in brackets show
the first architecture version where the instruction is available.
Extending branch ranges
B instructions have
restricted ranges 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 the linker places label.
When necessary, the linker adds code to enable longer branches. The
added code is called a veneer.
B in Thumb
You can use the
.W width specifier to force
generate a 32-bit instruction in Thumb code.
B.W always generates a 32-bit instruction,
even if the target could be reached using a 16-bit instruction.
For forward references,
generates a 16-bit instruction in Thumb code, even if that results
in failure for a target that could be reached using a 32-bit Thumb
B instruction does not change
See the preceding table for details of availability of the
B instruction in each
Use .W to instruct the assembler to use this 32-bit instruction.