3

ARM アセンブリでこれを行う最もエレガントな方法は何でしょうか?

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

すべての値がすでにレジスタにあると仮定します

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

2 に答える 2

4

みたいなことを考えているのですが、もう少し様子をみないと…。

cmp r2,r3
cmpeq r0,r1
bne skip
...
skip:
于 2013-06-11T14:42:22.623 に答える
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)
{
    ...
}

これをコンパイルして、逆アセンブルを見てください。

于 2013-06-11T14:38:55.813 に答える