4.5.2. QADD, QSUB, QDADD 및 QDSUB

부호 있는 더하기, 빼기, 이중 및 더하기, 이중 및 빼기, 부호 있는 –231x ≤ 231–1 범위로 결과 포화

병렬 더하기 및 빼기도 참조하십시오.

구문

op{cond} {Rd}, Rm, Rn

인수 설명:

op

QADD, QSUB, QDADD 또는 QDSUB 중 하나입니다.

cond

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

Rd

대상 레지스터입니다.

Rm, Rn

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

Rd, Rm 또는 Rn에 r15를 사용하면 안 됩니다.

사용법

QADD 명령어는 Rm의 값과 Rn의 값을 더합니다.

QSUB 명령어는 Rm의 값에서 Rn의 값을 뺍니다.

QDADD 명령어는 SAT (Rm + SAT (Rn * 2) ) 를 계산합니다. 이 경우 배수화 연산이나 더하기 중 하나 또는 둘 다에서 포화가 발생할 수 있습니다. 포화가 배수화에서만 발생하고 더하기에서는 발생하지 않으면 Q 플래그가 설정되지만 최종 결과는 포화되지 않습니다.

QDSUB 명령어는 SAT (Rm - SAT (Rn * 2) ) 를 계산합니다. 이 경우 배수화 연산이나 빼기 중 하나 또는 둘 다에서 포화가 발생할 수 있습니다. 포화가 배수화에서만 발생하고 빼기에서는 발생하지 않으면 Q 플래그가 설정되지만 최종 결과는 포화되지 않습니다.

Note

이러한 명령어는 모든 값을 2의 보수 부호 있는 정수로 처리합니다.

ARMv6 이상에서만 사용할 수 있는 유사한 병렬 명령어에 대해서는 병렬 더하기 및 빼기를 참조하십시오.

조건 플래그

포화가 발생하면 이러한 명령어는 Q 플래그를 설정합니다. Q 플래그의 상태를 보려면 MRS 명령어 (MRS 참조) 를 사용하십시오.

아키텍처

이러한 ARM 명령어는 ARMv6 이상과 ARMv5의 E 변형에서 사용할 수 있습니다.

이러한 32비트 Thumb 명령어는 ARMv7-M 프로필을 제외하고 ARMv6T2 이상에서 사용할 수 있습니다.

이러한 명령어의 16비트 Thumb 버전은 없습니다.

예제

    QADD    r0, r1, r9
    QDSUBLT r9, r0, r1
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential