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);