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 は使用できません。

A32 命令での SP の使用は非推奨です。T32 命令では SP は使用できません。

Show/hide条件フラグ

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

Show/hide16 ビット命令

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

SXTB Rd, Rm

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

SXTH Rd, Rm

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

UXTB Rd, Rm

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

UXTH Rd, Rm

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

Show/hide可用性

これらの命令は A32 および T32 で使用できます。

T32 では、これらは 16 ビットおよび 32 ビットエンコーディングで使用できます。

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 © 2014 ARM. All rights reserved.ARM DUI 0802AJ
Non-ConfidentialID061814