如何比较两个寄存器并在大于时执行操作而不在 ARM 中进行分支

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

我正在尝试比较两个寄存器 r5 和 r6,我知道我可以用它来做

CMP R7, R5

我想做的是

如果 R7 > 1 那么

ADD R8, R8, #1
没有分支,因为我将在代码的不同部分多次使用它

我知道如果大于的话BGT会分支,或者分支后是否有可能返回到之前的位置以添加到计数中?

assembly arm cmp branchless
1个回答
2
投票

许多ARM指令被定义为OP{cond},这意味着您可以使该指令的执行取决于条件:

cmp r5, r7
addgt r8, r8, #1 //increments r8 if r5 is greater than r7
mov r1, r0 //executes in any case
© www.soinside.com 2019 - 2024. All rights reserved.