Table 8 shows
B instructions 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.
B instructions have restricted
ranges from the address of the current instruction. However, you
can use these instructions even if
out of range. Often you do not know where the linker places
When necessary, the linker adds code to enable longer branches. The
added code is called a veneer.
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
See Table 8 for
details of availability of the
B instruction in each