如何将此if语句表示为ARM指令?

时间:2015-08-10 18:44:39

标签: arm

if (R1 > R2 || R3 > R4)
    R1 = R1 + 1

我无法弄清楚如何处理多种情况。说明看起来像这样吗?

CMP     R1, R2
CMPNE   R3, R4
ADDEQ   R1, R1, #1

1 个答案:

答案 0 :(得分:0)

if (R1 > R2 || R3 > R4)
    R1 = R1 + 1

OR条件使得这很棘手,因为它需要进行短路评估。你可以做的是通过比较进行评估,只有当r1不大于r2时才进行评估,然后让add指令查看上次比较完成时标志的结果。

cmp   r1, r2     ; compare r1 and r2
cmpls r3, r4     ; if lower or same, compare r3 and r4
addhi r1, r1, #1 ; if higher, add 1