4.4.3. SMULxy 및 SMLAxy

16비트 피연산자, 32비트 결과 및 누산기 포함 부호 있는 곱하기 및 곱하기 누산

구문

SMUL<x><y>{cond} {Rd}, Rn, Rm
SMLA<x><y>{cond} Rd, Rn, Rm, Ra

인수 설명:

<x>

B 또는 T입니다. BRn의 하위 하프 (비트[15:0]) 사용을 의미하고, TRn의 상위 하프 (비트[31:16]) 사용을 의미합니다.

<y>

B 또는 T입니다. BRm의 하위 하프 (비트[15:0]) 사용을 의미하고, TRm의 상위 하프 (비트[31:16]) 사용을 의미합니다.

cond

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

Rd

대상 레지스터입니다.

Rn, Rm

곱할 값이 들어 있는 레지스터입니다.

Ra

더할 값이 들어 있는 레지스터입니다.

사용법

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

SMULxyRnRm의 선택된 하프에서 16비트 부호 있는 정수를 곱하고 32비트 결과를 Rd에 배치합니다.

SMLAxyRnRm의 선택된 하프에서 16비트 부호 있는 정수를 곱하고 32비트 결과를 Ra의 32비트 값에 더한 다음 결과를 Rd에 배치합니다.

조건 플래그

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

누산에 오버플로가 발생하면 SMLAxy가 Q 플래그를 설정합니다. Q 플래그의 상태를 보려면 MRS 명령어 (MRS 참조) 를 사용하십시오.

Note

SMLAxy는 Q 플래그를 지울 수 없습니다. Q 플래그를 지우려면 MSR 명령어 (MSR 참조) 를 사용하십시오.

아키텍처

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

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

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

예제

    SMULTBEQ    r8, r7, r9
    SMLABBNE    r0, r2, r1, r10
    SMLABT      r0, r0, r3, r5
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential