ARM 프로그래밍 내에서 조건부 실행을 파악하려고합니다. 것ARM 구문의 "And"에 대한 조건부 실행
if ((R0 != 5) || (R2 != R3)) ; != means not equal, || mean OR
{
R4-- ; // R4 = R4 - 1
}
그리고 이것의 ARM 버전 :
그래서 나는 종류의 이런 상황을 이해
CMP R0, 5
CMPEQ R2, R3
SUBNE R4, R4, 1
내가 궁금해서 ARM 그는 "OR"는 것을 아는 방법 (||). 그래서 두 가지를 비교합니다. 그러나 두 비교가 맞지 않으면 어떻게됩니까? 그것은 NE가하는 일입니까? 다른 경우 (예 : 아래 예와 같이) 어떻게됩니까?
이if ((R0 > 5) && (R2 != R3)) ; != means not equal, && mean AND
{
R4-- ; // R4 = R4 - 1
}
는 어떻게 ARM 조건부 지침이 작성합니다 :
그래서 코드는이라고 할 수 있습니다?
감사합니다.
이하인 경우 분기를 나타냅니다. 당신은 단지 두 조건을 반전하고, 두 조건 중 어느 것이 주어질 때'R4 -'를 건너 뛰게됩니다 (당신이 ||와 같이 할 때) – Tommylee2k
@ Tommylee2k invert가 무엇을 의미합니까? 예를 들어 줄 수 있습니까? – hiquetj
ARM은 asm이 수행해야하는 작업을 "알지 못합니다."그냥 지시 사항을 실행합니다. 중요한 것은 가능한 모든 입력에 대해 결과가 C와 동일하다는 것입니다. 예를 들어, asm에서 구현할 때, C가 단락을 일으키는 것을 평가하는 것을 피할 필요가 없습니다. (예를 들어, 값이 이미 레지스터에 있다면, 처음에'&&'의 절반을 검사 할 수 있습니다. 그러나 후자가 포인터를 역 참조하는 경우 NULL이 될 수 있으므로 C가 없을 때 역 참조하는 asm을 작성하면 안됩니다 't.) –