ADR(レジスタ相対)

ADR は、デスティネーションレジスタにレジスタ相対アドレスを生成します(ラベルは記憶域マップに定義)。

Show/hide構文

ADR{cond}{.W} Rd,label

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

cond

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

.W

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

Rd

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

label

FIELD ディレクティブで定義されるシンボルを指定します。label は、MAP ディレクティブを使用して定義されるベースレジスタからのオフセットを指定します。

label は、ベースレジスタから限定された距離にある必要があります。

Show/hide使用法

ADR は、記憶域マップ内の名前付きフィールドに簡単にアクセスするためのコードを生成します。

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

Show/hide制限

Thumb コード:

  • RdPC にすることはできません。

  • RdSP にできるのは、ベースレジスタが SP の場合のみです。

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

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

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

Table 11. レジスタ相対オフセット

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

[a] Rd に指定するレジスタは、R0 ~ R7 の範囲にあるか、SP である必要があります。Rd が SP の場合、オフセット範囲は -508 ~ 508 です。4 の倍数で指定して下さい。

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


Show/hideThumb-2 の ADR

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

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

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0489EJ
Non-ConfidentialID081711