LDR(レジスタ相対)

レジスタロード命令です。アドレスはベースレジスタからのオフセットです。

Show/hide構文

LDR{type}{cond}{.W} Rt, label
LDRD{cond} Rt, Rt2, label        ; ダブルワード

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

type

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

B

符号なしバイト(ロード時に 32 ビットにゼロ拡張)

SB

符号付きバイト(LDR のみ。32 ビットに符号拡張)

H

符号なしハーフワード(ロード時に 32 ビットにゼロ拡張)

SH

符号付きハーフワード(LDR のみ。32 ビットに符号拡張)

-

省略(ワード)

cond

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

.W

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

Rt

ロードまたはストアするレジスタを指定します。

Rt2

2 番目にロードまたはストアするレジスタを指定します。

label

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

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

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

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

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

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

命令オフセット範囲アーキテクチャ
ARM LDRLDRB[a]+/- 4095すべて
ARM LDRSBLDRHLDRSH+/- 255すべて
ARM LDRD+/- 255v5TE +
32 ビット Thumb LDRLDRBLDRSBLDRHLDRSH [a]-255 ~ 4095v6T2、v7
32 ビット Thumb LDRD+/- 1020 [b]v6T2、v7
16 ビット Thumb LDR [c]0 ~ 124 [b]すべての T
16 ビット Thumb LDRH [c]0 ~ 62 [d]すべての T
16 ビット Thumb LDRB [c]0 ~ 31すべての T
16 ビット Thumb LDR、ベースレジスタは SP[e]0 ~ 1020 [b]すべての T
16 ビット ThumbEE LDR [c]-28 ~ 124 [b]T-2EE
16 ビット Thumb LDR、ベースレジスタは R9 [e]0 ~ 252 [b]T-2EE
16 ビット ThumbEE LDR、ベースレジスタは R10 [e]0 ~ 124 [b]T-2EE

[a] ワードのロードでは Rt に PC(プログラムカウンタ)を指定できます。PC へのロードを実行すると、ロードされたアドレスへの分岐が発生します。ARMv4 では、ロードされたアドレスのビット [1:0] は 0b00 になっている必要があります。ARMv5T 以降のバージョンでは、ビット [1:0] が 0b10 であってはりません。ビット [0] が 1 になっている場合、Thumb 状態で実行が継続されます。それ以外の場合は、ARM 状態で継続されます。

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

[c] Rt およびベースレジスタは R0 ~ R7 の範囲内にある必要があります。

[d] 2 の倍数で指定して下さい。

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


Show/hide32 ビット Thumb の LDR(レジスタ相対)

.W 幅指定子を指定して、LDR で Thumb コードの 32 ビット命令を生成できます。LDR.W を指定した場合は、16 ビット LDR を使用してターゲットに到達できる場合でも、常に 32 ビット命令が生成されます。

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

Show/hideダブルワードレジスタの制約条件

32 ビット Thumb 命令の場合、Rt または Rt2 に SP または PC は指定できません。

ARM 命令には、以下の制約条件が適用されます。

  • Rt には偶数番号のレジスタを指定する必要があります。

  • Rt に LR は指定できません。

  • R12Rt に使用しないことを強く推奨します。

  • Rt2R(t + 1)であることが必要です。

Show/hidePC の使用

Rt での PC をワード命令で使用できます。これらの命令では、他の PC の使用は許されません。

Show/hideSP の使用

ARM では、Rt での SP をワード命令で使用できます。Rt での SP は非ワード ARM 命令で使用できますが、これは ARMv6T2 以降では非推奨です。

Thumb では、Rt での SP はワード命令だけで使用できます。これらの命令で、Rt での SP を他の方法で使用した場合、Thumb コードでは使用できません。

Show/hide関連項目

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