4.4.1. MUL, MLA 및 MLS

결과의 최하위 32비트를 제공하여 부호 있는 또는 부호 없는 32비트 피연산자 포함 곱하기, 곱하기 누산 및 곱하기 빼기.

구문

MUL{S}{cond} {Rd}, Rn, Rm
MLA{S}{cond} Rd, Rn, Rm, Ra
MLS{cond} Rd, Rn, Rm, Ra

인수 설명:

cond

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

S

선택적 접미사입니다. S를 지정하면 연산 결과의 조건 코드 플래그가 업데이트됩니다 (조건부 실행 참조).

Rd

대상 레지스터입니다.

Rn, Rm

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

Ra

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

사용법

MUL 명령어는 Rn의 값과 Rm의 값을 곱하고 결과의 최하위 32비트를 Rd에 배치합니다.

MLA 명령어는 Rn의 값과 Rm의 값을 곱하고 Ra의 값을 더한 다음 결과의 최하위 32비트를 Rd에 배치합니다.

MLS 명령어는 Rn의 값과 Rm의 값을 곱하고 Ra의 값에서 결과를 뺀 다음 최종 결과의 최하위 32비트를 Rd에 배치합니다.

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

조건 플래그

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

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

  • ARMv4 이하에서는 C 및 V 플래그를 손상시킵니다.

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

Thumb 명령어

MUL 명령어의 다음 형식은 Thumb-2 이전 Thumb 코드에서 사용할 수 있으며, Thumb-2 코드에서 사용될 경우 16비트 명령어입니다.

MULS Rd, Rn, Rd

RdRn은 모두 Lo 레지스터여야 합니다.

조건 코드 플래그를 업데이트할 수 있는 다른 Thumb 곱하기 명령어는 없습니다.

아키텍처

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

MLS ARM 명령어는 ARMv6T2 이상에서 사용할 수 있습니다.

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

MULS 16비트 Thumb 명령어는 ARM 아키텍처의 모든 T 변형에서 사용할 수 있습니다.

예제

    MUL     r10, r2, r5
    MLA     r10, r2, r1, r5
    MULS    r0, r2, r2
    MULLT   r2, r3, r2
    MLS     r4, r5, r6, r7
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential