ADR(PC 相対)

ADR は、デスティネーションレジスタに PC 相対アドレスを生成します(ラベルは現在の領域)。

Show/hide構文

ADR{cond}{.W} Rd,label

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

cond

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

.W

任意に指定できる幅指定子を指定します。

Rd

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

label

PC 相対式を指定します。

label は現在の命令から限定された距離にある必要があります。

Show/hide使用法

ADR は、位置非依存コードを生成します。アセンブラにより、PC に対して値を加算または減算する命令が生成されるためです。

より広範囲の有効なアドレスをアセンブルするには、ADRL 疑似命令を使用します。

label は、ADR 命令と同じアセンブラ領域内のアドレスに評価される必要があります。

BX または BLX 命令のターゲットを生成するために ADR を使用するときは、ターゲットに Thumb 命令が含まれている場合、そのアドレスの Thumb ビット(ビット 0)を設定する必要があります。

Show/hideオフセットの範囲とアーキテクチャ

アセンブラは、PC からオフセットを算出します。label が範囲外である場合、アセンブラはエラーを生成します。

Table 8 はラベルと現在の命令との間の可能なオフセットを示します。

Table 10. PC 相対オフセット

命令オフセット範囲アーキテクチャ
ARM ADR詳細については、「定数としての Operand2」を参照して下さい。すべて
32 ビット Thumb ADR+/- 4095v6T2、v7
16 ビット Thumb ADR [a]0-1020 [b]すべての T

[a] Rd には R0 ~ R7 の範囲のレジスタを指定する必要があります。

[b] 4 の倍数で指定して下さい。


Show/hide32 ビット Thumb の ADR

.W 幅指定子を指定して、ADR で Thumb コードの 32 ビット命令を生成できます。.W と共に ADR を指定した場合は、16 ビット命令でアドレスを生成できる場合でも、常に 32 ビット命令が生成されます。

参考として、32 ビット Thumb ADD 命令を使用して生成できるアドレスで失敗が発生する場合でも、.W 指定なしの ADR は常に 16 ビット Thumb コードの命令を生成します。

Show/hide制約条件

Thumb コードでは、RdPC または SP にすることはできません。

ARM コードで、Rd には PC または SP を使用できますが、SP の使用は ARMv6T2 以降では非推奨です。

Show/hide関連項目

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