否";beq";或;bne“;ARMv7-M手册中的说明?
我正在研制一个STM32l475微控制器,它运行Cortex-M4处理器和ARM/Thumb指令集。我看到(从否";beq";或;bne“;ARMv7-M手册中的说明?,arm,armv7,cortex-m,Arm,Armv7,Cortex M,我正在研制一个STM32l475微控制器,它运行Cortex-M4处理器和ARM/Thumb指令集。我看到(从objdump)有beq.n和bne.n指令是在ARM程序的二进制文件中生成的(我在编译程序时添加了-mthumb标志)。但是,我在最新的手册中找不到这些分支说明 谁能告诉我原因吗?手册中有哪些指令与这两个分支指令等效?beq和bne是条件分支;换句话说,它们是无条件分支b的条件版本eq和ne是两种不同的条件码;第A7.3节对其进行了描述beq如果相等,则表示分支;bne如果不相等,则表
objdump
)有beq.n
和bne.n
指令是在ARM程序的二进制文件中生成的(我在编译程序时添加了-mthumb
标志)。但是,我在最新的手册中找不到这些分支说明
谁能告诉我原因吗?手册中有哪些指令与这两个分支指令等效?
beq
和bne
是条件分支;换句话说,它们是无条件分支b
的条件版本eq
和ne
是两种不同的条件码;第A7.3节对其进行了描述beq
如果相等,则表示分支;bne
如果不相等,则表示分支
b
分支指令在Thumb模式下有两种不同的编码。您看到的编码可能是第A7.7.12节中描述的T1编码:
B
1513121010987654310
10101[--][--imm8-----]
在此编码中,条件代码(如eq
或ne
)直接编码到指令中,以位8-11表示。从objdump反汇编显示条件代码以代替上面的
。因此,使用第A7.3节中的条件代码表,将beq
编码为11010000[imm8]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 0 1 [-<cond>--] [--------imm8---------]