arm assembly if(表达式&&表达式)

时间:2013-06-11 14:23:14

标签: assembly arm

在ARM程序集中执行此操作的最佳方法是什么?

If(x0 == x1 && y0 == y1)
  {
    ...
  }

假设所有值都已存在于寄存器中

equal:
  cmp r2, r3
  beq are_equal
  b not_equal
check: 
  cmp r0, r1
  beq equal
not_equal:

2 个答案:

答案 0 :(得分:4)

我在想这样的事情,但我还要再盯着它......

cmp r2,r3
cmpeq r0,r1
bne skip
...
skip:

答案 1 :(得分:0)

你可能会通过这样做GCC为你生成一些优雅的代码:

register int x0 asm ("r2");
register int x1 asm ("r3");
register int y0 asm ("r0");
register int y1 asm ("r1");
if(x0 == x1 && y0 == y1)
{
    ...
}

编译它,然后查看反汇编。