BX Branch and Exchange Branch and Exchange causes a branch to an address and instruction set specified by a register. For more information about the constrained unpredictable behavior, see Architectural Constraints on UNPREDICTABLE behaviors. It has encodings from the following instruction sets: A32 ( A1 ) and T32 ( T1 ) . != 1111 0 0 0 1 0 0 1 0 (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) 0 0 0 1 BX{<c>}{<q>} <Rm> m = UInt(Rm); 0 1 0 0 0 1 1 1 0 (0) (0) (0) BX{<c>}{<q>} <Rm> m = UInt(Rm); if InITBlock() && !LastInITBlock() then UNPREDICTABLE; <c> See Standard assembler syntax fields. <q> See Standard assembler syntax fields. <Rm> For encoding A1: is the general-purpose register holding the address to be branched to, encoded in the "Rm" field. The PC can be used. <Rm> For encoding T1: is the general-purpose register holding the address to be branched to, encoded in the "Rm" field. The PC can be used. If <Rm> is the PC at a non word-aligned address, it results in unpredictable behavior because the address passed to the BXWritePC() pseudocode function has bits<1:0> = '10'. if ConditionPassed() then EncodingSpecificOperations(); BXWritePC(R[m], BranchType_INDIR);