UMULL、UMLAL、SMULL、SMLAL

符号付き/符号なし long 乗算命令と任意に指定できる積算命令です(32 ビット× 32 ビットを実行し、64 ビットの積算値と結果を返します)。

Show/hide構文

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

各パラメータには以下の意味があります。

Op

UMULLUMLALSMULL、または SMLAL のいずれかを指定します。

S

任意に指定できる接尾文字です。ARM 状態でのみ使用できます。S が指定されている場合は、演算結果に基づいて条件コードフラグが更新されます。

cond

任意の条件コードを指定します。

RdLoRdHi

デスティネーションレジスタを指定します。UMLAL および SMLAL では、これらのレジスタに累算値も保存されます。RdLoRdHi には、それぞれ異なるレジスタを指定する必要があります。

Rn、Rm

オペランドを保持する ARM レジスタを指定します。

Show/hide使用法

UMULL 命令は RnRm の値を符号なし整数と解釈します。これらの整数を乗算して、演算結果の下位 32 ビットを RdLo に返し、上位 32 ビットを RdHi に返します。

UMLAL 命令は RnRm の値を符号なし整数と解釈します。これらの整数を乗算して得られた 64 ビットの演算結果を、RdHiRdLo が保持している 64 ビットの符号なし整数に加算します。

SMULL 命令は、RnRm の値を、2 の補数となる符号付き整数と解釈します。これらの整数を乗算して、演算結果の下位 32 ビットを RdLo に返し、上位 32 ビットを RdHi に返します。

SMLAL 命令は、RnRm の値を、2 の補数となる符号付き整数と解釈します。これらの整数を乗算して得られた 64 ビットの演算結果を、RdHiRdLo が保持している 64 ビットの符号付き整数に加算します。

Show/hideレジスタの制約条件

ARMv6 より前のアーキテクチャでは、RnRdLo および RdHi とは異なる必要があります。

レジスタには PC は使用できません。

SP は ARM 命令で使用できますが、これらは ARMv6T2 以降では非推奨です。Thumb 命令では SP は使用できません。

Show/hide条件フラグ

S が指定されている場合、これらの命令では、以下のようになります。

  • 結果に応じて N フラグおよび Z フラグを更新します。

  • C フラグまたは V フラグは更新しません。

Show/hideアーキテクチャ

これらの ARM 命令は、ARM アーキテクチャのすべてのバージョンで使用できます。

これらの 32 ビット Thumb 命令は、ARMv6T2 以降で使用できます。

これらの命令の 16 ビット Thumb バージョンはありません。

Show/hide

    UMULL       r0, r4, r5, r6
    UMLALS      r4, r5, r3, r8

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0489FJ
Non-ConfidentialID111211