SXT、SXTA、UXT、UXTA

符号拡張、符号拡張と加算、ゼロ拡張、ゼロ拡張と加算。

Show/hide構文

SXT<extend>{cond}  {Rd}, Rm  {,rotation}
SXTA<extend>{cond} {Rd}, Rn, Rm {,rotation}
UXT<extend>{cond}  {Rd}, Rm  {,rotation}
UXTA<extend>{cond} {Rd}, Rn, Rm {,rotation}

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

<extend>

次のいずれかを指定します。

B16

2 つの 8 ビット値を 2 つの 16 ビット値に拡張します。

B

8 ビット値を 32 ビット値に拡張します。

H

16 ビット値を 32 ビット値に拡張します。

cond

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

Rd

デスティネーションレジスタを指定します。

Rn

加算する数を保持するレジスタを指定します(SXTAUXTA の場合のみ)。

Rm

拡張する値を保持するレジスタを指定します。

rotation

次のいずれかを指定します。

ROR #8

Rm の値が右に 8 ビットロテートされます。

ROR #16

Rm の値が右に 16 ビットロテートされます。

ROR #24

Rm の値が右に 24 ビットロテートされます。

rotation を省略した場合、ロテートは実行されません。

Show/hide演算

これらの命令は以下の処理を行います。

  1. Rm の値を右に 0 ビット、8 ビット、16 ビット、または 24 ビットロテートします。

  2. 取得した値に対して以下のいずれかの処理を行います。

    • ビット [7:0] を抽出し、32 ビットに符号拡張またはゼロ拡張します。命令で拡張と加算を行う場合は、Rn の値を加算します。

    • ビット [15:0] を抽出し、32 ビットに符号拡張またはゼロ拡張します。命令で拡張と加算を行う場合は、Rn の値を加算します。

    • ビット [23:16] とビット [7:0] を抽出し、これらのビットを 16 ビットに符号拡張またはゼロ拡張します。命令で拡張と加算を行う場合は、これらのットをそれぞれ Rn のビット [31:16] とビット [15:0] に加算して、結果のビット [31:16] とビット [15:0] を作成します

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

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

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

Show/hide条件フラグ

これらの命令によるフラグへの影響はありません。

Show/hide16 ビット命令

これらの命令は、Thumb コード内では次の形式で使用できます。これらは 16 ビット命令です。

SXTB Rd, Rm

RdRm は共に Lo レジスタである必要があります。

SXTH Rd, Rm

RdRm は共に Lo レジスタである必要があります。

UXTB Rd, Rm

RdRm は共に Lo レジスタである必要があります。

UXTH Rd, Rm

RdRm は共に Lo レジスタである必要があります。

Show/hideアーキテクチャ

これらの ARM 命令は、ARMv6 以降で使用できます。

これらの 32 ビット Thumb 命令は、ARMv6T2 以降で使用できます。ARMv7-M アーキテクチャでは、これらは ARMv7E-M 実装でだけ使用できます。

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

Show/hide

    SXTH         r3, r9, r4
    UXTAB16EQ    r0, r0, r4, ROR #16

Show/hide誤用例

    SXTH     r9, r3, r2, ROR #12 ; ロテートの値は 0、8、16、または 24 であること。

Show/hide関連項目

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