4.4.7. SMMUL, SMMLA 및 SMMLS

부호 있는 최상위 워드 곱하기, 누산 포함 부호 있는 최상위 워드 곱하기, 빼기 포함 부호 있는 최상위 워드 곱하기. 이러한 명령어는 32비트 피연산자를 사용하고 결과의 최상위 32비트만 생성합니다.

구문

SMMUL{R}{cond} {Rd}, Rn, Rm
SMMLA{R}{cond} Rd, Rn, Rm, Ra
SMMLS{R}{cond} Rd, Rn, Rm, Ra

인수 설명:

R

선택적 매개변수입니다. R이 있으면 결과를 반올림하고, 그렇지 않으면 결과를 자릅니다.

cond

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

Rd

대상 레지스터입니다.

Rn, Rm

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

Ra

더하거나 뺄 값이 들어 있는 레지스터입니다.

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

연산

SMMULRnRm의 값을 곱하고 64비트 결과의 최상위 32비트를 Rd에 저장합니다.

SMMLARnRm의 값을 곱하고 Ra의 값을 결과의 최상위 32비트에 더한 다음 결과를 Rd에 저장합니다.

SMMLSRnRm의 값을 곱하고 32비트 왼쪽으로 시프트된 Ra의 값에서 결과를 뺀 다음 결과의 최상위 32비트를 Rd에 저장합니다.

선택적 R 매개변수를 지정하면 최상위 32비트를 추출하기 전에 0x80000000이 더해집니다. 이것은 결과를 반올림하는 효과가 있습니다.

조건 플래그

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

아키텍처

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

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

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

예제

    SMMULGE     r6, r4, r3
    SMMULR      r2, r2, r2
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential