ARM,分支链接,BL vs MOV,B

时间:2014-06-17 19:59:38

标签: assembly branch

之间有什么区别:

bl label

mov r14, r15
b label

除了方便之外?

(我正在使用Raspberry Pi,所以r15是当前地址+ 8,因为管道)

2 个答案:

答案 0 :(得分:3)

它可能与您正在做的事情无关,但有一点不同:mov + b方法与简单bl的时间不同。目标不是PC的mov需要1个周期。 blb都采用相同数量的周期(取决于分支预测)。

所以,使用

mov r14, r15
b label

长一个周期
bl label

这在具有严格时序要求的嵌入式应用中非常重要。 bl label更清晰,应该使用,如果时间问题,nop + bl会比mov + b更明确。

参考文献:Cycle counts if destination is not the PCBranches

答案 1 :(得分:0)

如果使用B而不是BL,分支监视器内的分支类型将不会将其视为一个调用,这使您更难分析软件的运行情况。