4.4.2. UMULL, UMLAL, SMULL 및 SMLAL

선택적 누산, 32비트 피연산자, 64비트 결과 및 누산기 포함 부호 있는 및 부호 없는 long 곱하기.

구문

Op{S}{cond} RdLo, RdHi, Rn, Rm

인수 설명:

Op

UMULL, UMLAL, SMULL 또는 SMLAL 중 하나입니다.

S

ARM 상태에서만 사용할 수 있는 선택적 접미사입니다. S를 지정하면 연산 결과의 조건 코드 플래그가 업데이트됩니다 (조건부 실행 참조).

cond

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

RdLo, RdHi

대상 레지스터입니다. UMLALSMLAL에는 누산 값도 들어 있습니다. RdLoRdHi는 서로 다른 레지스터여야 합니다.

Rn, Rm

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

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

사용법

UMULL 명령어는 RnRm의 값을 부호 없는 정수로 해석하며, 이러한 정수를 곱하고 결과의 최하위 32비트를 RdLo에 배치하고 결과의 최상위 32비트를 RdHi에 배치합니다.

UMLAL 명령어는 RnRm의 값을 부호 없는 정수로 해석하며, 이러한 정수를 곱하고 64비트 결과를 RdHiRdLo에 들어 있는 64비트 부호 없는 정수에 더합니다.

SMULL 명령어는 RnRm의 값을 2의 보수 부호 있는 정수로 해석하며, 이러한 정수를 곱하고 결과의 최하위 32비트를 RdLo에 배치하고 결과의 최상위 32비트를 RdHi에 배치합니다.

SMLAL 명령어는 RnRm의 값을 2의 보수 부호 있는 정수로 해석하며, 이러한 정수를 곱하고 64비트 결과를 RdHiRdLo에 들어 있는 64비트 부호 있는 정수에 더합니다.

조건 플래그

S를 지정하면 이러한 명령어는 다음을 수행합니다.

  • 결과에 따라 N 및 Z 플래그를 업데이트합니다.

  • C 또는 V 플래그에 영향을 주지 않습니다.

아키텍처

이러한 ARM 명령어는 모든 버전의 ARM 아키텍처에서 사용할 수 있습니다.

이러한 32비트 Thumb 명령어는 ARMv6T2 이상에서 사용할 수 있습니다.

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

예제

    UMULL       r0, r4, r5, r6
    UMLALS      r4, r5, r3, r8
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential