4.3.9. TST 및 TEQ

비트 테스트 및 동등 테스트

구문

TST{cond} Rn, Operand2
TEQ{cond} Rn, Operand2

인수 설명:

cond

선택적 조건 코드입니다 (조건부 실행 참조).

Rn

첫 번째 피연산자가 들어 있는 ARM 레지스터입니다.

Operand2

유연한 두 번째 피연산자입니다. 옵션에 대한 자세한 내용은 유연한 두 번째 피연산자를 참조하십시오.

사용법

이러한 명령어는 레지스터 값을 Operand2에 대해 테스트하며 결과에서 조건 플래그를 업데이트하지만 레지스터에 결과를 배치하지 않습니다.

TST 명령어는 Rn의 값과 Operand2의 값에 대해 비트 단위 AND 연산을 수행합니다. 이 명령어는 결과가 버려진다는 점을 제외하고 ANDS 명령어와 동일합니다.

TEQ 명령어는 Rn의 값과 Operand2의 값에 대해 비트 배타적 OR 연산을 수행합니다. 이 명령어는 결과가 버려진다는 점을 제외하고 EORS 명령어와 동일합니다.

TEQ 명령어를 사용하면 CMP와 마찬가지로 V 또는 C 플래그에 영향을 주지 않고 두 값이 동일한지 여부를 테스트할 수 있습니다.

TEQ는 값의 부호를 테스트하는 데도 유용합니다. 비교 후, N 플래그는 두 피연산자 부호 비트의 논리 배타적 OR이 됩니다.

pc 사용

ARM 명령어의 경우

  • pc (r15) 를 Rn으로 사용하면 명령어 주소에 8을 더한 값이 사용됩니다.

  • 레지스터에 의해 제어된 시프트가 있는 데이터 처리 명령어에서는 피연산자에 pc를 사용할 수 없습니다 (유연한 두 번째 피연산자 참조).

Thumb-2 명령어에서는 Rn 또는 Operand2.에 pc를 사용할 수 없습니다.

조건 플래그

이러한 명령어는 다음을 수행합니다.

  • 결과에 따라 N 및 Z 플래그를 업데이트합니다.

  • Operand2를 계산하는 동안 C 플래그를 업데이트할 수 있습니다 (유연한 두 번째 피연산자 참조).

  • V 플래그를 변경하지 않습니다.

16비트 명령어

TST 명령어의 다음 형식은 Thumb-2 이전 Thumb 코드에서 사용할 수 있으며, Thumb-2 코드에서 사용될 경우 16비트 명령어입니다.

TST Rn, Rm

RnRm은 모두 Lo 레지스터여야 합니다.

예제

    TST     r0, #0x3F8
    TEQEQ   r10, r9
    TSTNE   r1, r5, ASR r1

올바르지 않은 예제

    TEQ     pc, r1, ROR r0      ; pc not permitted with register
                                ; controlled shift
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential