2013-06-11 3 views
3

ARM 어셈블리에서이 작업을 수행하는 가장 우아한 방법은 무엇입니까? 모든 값을 가정암 어셈블리 if (expression && expression)

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

는 레지스터에 이미

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

응시해야? –

답변

4

나는 이런 식으로 뭔가를 생각하고,하지만 난 그것을하는 ARM 아키텍처에 대한 좀 더 ...

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

ARMv5 ARM ARM의 9.2.3 절에는 * 조건부 비교 명령어 *와 비슷한 시퀀스가 ​​있습니다. 유일한 차이점은'bne skip '은 일련의 조건부'xxxeq' 명령으로 인코딩 될 수 있다는 것입니다. –

+0

모든 팔 명령은 조건부로 실행할 수 있습니다 (엄지 손가락이 아닌 전체 크기). 나는 OP가 ... 포함하는 것을 모른다. 그래서 단지 나뭇 가지를 넣는다. –

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) 
{ 
    ... 
} 

이 컴파일을 한 후 분해보고 .

+1

나는 노력했다. –