4.11.1. Instruction width specifiers, .W and .N

If you want to over-ride this behavior, you can use the .W width specifier. This forces the assembler to generate a 32-bit encoding, even if a 16-bit encoding is available.

You can use the .W specifier in code that might be assembled to either ARM or Thumb (ARMv6T2 or later) code. The .W specifier has no effect when assembling to ARM code.

If you want to be sure that an instruction is encoded in 16 bits, you can use the .N width specifier. In this case, if the instruction cannot be encoded in 16 bits or you are assembling to ARM code, the assembler generates an error.

If you use an instruction width specifier, you must place it immediately after the instruction mnemonic and condition code (if any), for example:

    BCS.W   label   ; forces 32-bit instruction even for a short branch
    B.N     label   : faults if label out of range for 16-bit instruction
Copyright © 2002-2010 ARM. All rights reserved.ARM DUI 0204J