ARMv7-M 手册中没有“beq”或“bne”指令?

Jay*_*Jay 4 arm armv7 cortex-m

我正在研究运行 Cortex-M4 处理器和 ARM/Thumb 指令集的 STM32l475 微控制器。我看(从objdump),有beq.nbne.n在一个ARM程序的二进制生成的指令(I添加-mthumb标志编译该程序时)。但是,我在最新的ARMv7-M手册中没有找到这些分支指令。

谁能告诉我原因?以及手册中与这两条分支指令等效的指令有哪些?

Jef*_*f E 7

beq并且bne是条件分支;换句话说,它们是无条件分支的条件版本beqne是两个不同的条件代码;它们在 A7.3 节中描述。beq手段是否等于分支bne手段分支,如果不相等

b分支指令必须在Thumb模式下的两个不同的编码。您看到的编码可能是 A7.7.12 节中描述的编码 T1:

B<c> <label>

15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
 1  1  0  1 [-<cond>--] [--------imm8---------] 
Run Code Online (Sandbox Code Playgroud)

在这种编码中,条件代码(如eqne)直接编码到指令中,位 8-11。从 objdump 反汇编显示条件代码代替<c>上面的代码。因此,使用 A7.3 节中的条件代码表,您将编码beq11010000[imm8].