4.6.1. 병렬 더하기 및 빼기

다양한 바이트 및 하프워드 더하기 및 빼기

구문

<prefix>op{cond} {Rd}, Rn, Rm

인수 설명:

<prefix>

다음 중 하나입니다.

S

부호 있는 산술 모듈로 28 또는 216, APSR GE 플래그 설정

Q

부호 있는 포화 산술

SH

결과를 양분하는 부호 있는 산술

U

부호 없는 산술 모듈로 28 또는 216, APSR GE 플래그 설정

UQ

부호 없는 포화 산술

UH

결과를 양분하는 부호 없는 산술

op

다음 중 하나입니다.

ADD8

바이트 더하기

ADD16

하프워드 더하기

SUB8

바이트 빼기

SUB16

하프워드 빼기

ASX

Rm의 하프워드를 교환한 다음 상위 하프워드를 더하고 하위 하프워드를 뺍니다.

SAX

Rm의 하프워드를 교환한 다음 상위 하프워드를 빼고 하위 하프워드를 더합니다.

cond

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

Rd

대상 레지스터입니다. Rd에 r15를 사용하면 안 됩니다.

Rm, Rn

피연산자가 들어 있는 ARM 레지스터입니다. Rm 또는 Rn에 r15를 사용하면 안 됩니다.

연산

이러한 명령어는 피연산자의 바이트 또는 하프워드에 대한 개별 산술 연산을 수행합니다. 즉, 두 번 또는 네 번의 더하기 또는 빼기를 수행하거나 한 번의 더하기와 한 번의 빼기를 수행합니다.

다음과 같은 다양한 유형의 산술을 선택할 수 있습니다.

  • 부호 있는 또는 부호 없는 산술 모듈로 28 또는 216, APSR GE 플래그 설정 (조건 플래그 참조)

  • 부호 있는 범위 –215 ?x ?215 –1 또는 –27 ≤ x ≤27 –1 중 하나에 대한 부호 있는 포화 산술. 이러한 연산이 포화되는 경우에도 Q 플래그는 영향을 받지 않습니다.

  • 부호 없는 범위 0 ≤ x ≤216 –1 또는 0 ≤ x ≤28 –1 중 하나에 대한 부호 없는 포화 산술. 이러한 연산이 포화되는 경우에도 Q 플래그는 영향을 받지 않습니다.

  • 결과를 양분하는 부호 있는 또는 부호 없는 산술. 이 연산은 오버플로를 일으킬 수 없습니다.

조건 플래그

이러한 명령어는 N, Z, C, V 또는 Q 플래그에 영향을 주지 않습니다.

이러한 명령어의 Q, SH, UQUH 접두사 변형은 플래그를 변경하지 않습니다.

이러한 명령어 세트의 SU 접두사 변형은 다음과 같이 APSR에 GE 플래그를 설정합니다.

  • 바이트 연산의 경우, GE 플래그는 다음과 같이 32비트 SUBADD 명령어의 C (Carry) 플래그와 동일한 방식으로 사용됩니다.

    GE[0]

    결과 비트[7:0]의 경우

    GE[1]

    결과 비트[15:8]의 경우

    GE[2]

    결과 비트[23:16]의 경우

    GE[3]

    결과 비트[31:24]의 경우

  • 하프워드 연산의 경우, GE 플래그는 다음과 같이 일반 워드 SUBADD 명령어의 C (Carry) 플래그와 동일한 방식으로 사용됩니다.

    GE[1:0]

    결과 비트[15:0]의 경우

    GE[3:2]

    결과 비트[31:16]의 경우

이러한 플래그를 사용하면 그 다음 SEL 명령어를 제어할 수 있습니다 (SEL 참조).

Note

하프워드 연산의 경우, GE[1:0]이 함께 설정되거나 해제되고 GE[3:2]가 함께 설정되거나 해제됩니다.

아키텍처

이러한 ARM 명령어는 ARMv6 이상에서 사용할 수 있습니다.

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

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

예제

    SHADD8      r4, r3, r9
    USAXNE      r0, r0, r2

올바르지 않은 예제

    QHADD       r2, r9, r3    ; No such instruction, should be QHADD8 or QHADD16
    SAX         r10, r8, r5   ; Must have a prefix.
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential