4.4.9. SMLALD 및 SMLSLD

결과 더하기 또는 빼기 및 64비트 누산 포함 이중 16비트 부호 있는 곱하기

구문

op{X}{cond} RdLo, RdHi, Rn, Rm

인수 설명:

op

다음 중 하나입니다.

SMLALD

이중 곱하기, 결과의 합 누산

SMLSLD

이중 곱하기, 결과의 차이 누산

X

선택적 매개변수입니다. X가 있으면 곱하기가 수행되기 전에 두 번째 피연산자의 최상위 및 최하위 하프워드가 교환됩니다.

cond

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

RdLo, RdHi

64비트 결과의 대상 레지스터입니다. 이 대상 레지스터에는 64비트 누산 피연산자도 들어 있습니다. RdHiRdLo는 서로 다른 레지스터여야 합니다.

Rn, Rm

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

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

연산

SMLALDRn의 하위 하프워드와 Rm의 하위 하프워드를 곱하고 Rn의 상위 하프워드와 Rm의 상위 하프워드를 곱합니다. 그런 다음 두 결과를 모두 RdLo, RdHi의 값에 더하고 그 합을 RdLo, RdHi에 저장합니다.

SMLSLDRn의 하위 하프워드와 Rm의 하위 하프워드를 곱하고 Rn의 상위 하프워드와 Rm의 상위 하프워드를 곱합니다. 그런 다음 첫 번째 결과에서 두 번째 결과를 빼고 그 차이를 RdLo, RdHi의 값에 더한 다음 결과를 RdLo, RdHi에 저장합니다.

조건 플래그

이러한 명령어는 플래그를 변경하지 않습니다.

아키텍처

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

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

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

예제

    SMLALD      r10, r11, r5, r1
    SMLSLD      r3, r0, r5, r1
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential