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

问题描述 投票:2回答:1

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

谁能告诉我原因?手册中提供的指令与这两个分支指令相同?

arm armv7 cortex-m
1个回答
4
投票

beqbne是有条件的分支;换句话说,它们是无条件分支b的条件版本。 eqne是两个不同的条件代码;它们在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---------] 

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

© www.soinside.com 2019 - 2024. All rights reserved.