LDR(PC 相対)

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

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

PC 相対式を指定します。

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

Note

同等の構文が A32 コードの STR 命令で利用できますが、それらは非推奨です。

Show/hideオフセット範囲

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

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

Table 13. PC 相対オフセット

命令オフセット範囲
A32 LDRLDRBLDRSBLDRHLDRSH [a]+/- 4095
A32 LDRD+/- 255
32 ビット T32 LDRLDRBLDRSBLDRHLDRSH [a]+/- 4095
32 ビット T32 LDRD+/- 1020 [b]
16 ビット T32 LDR [c]0-1020 [b]

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

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

[c] Rt には R0 ~ R7 の範囲のレジスタを指定する必要があります。バイト、ハーフワード、ダブルワードの 16 ビット命令はありません。


Show/hideT32 の LDR(PC 相対)

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

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

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

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

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

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

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

  • R12Rt に使用しないことをお勧めします。

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

Show/hideSP の使用

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

T32 では、Rt での SP を LDR ワード命令でのみ使用できます。これらの命令での、他のすべての SP の使用は、T32 コードでは許可されていません。

Show/hide関連項目

Copyright © 2014 ARM. All rights reserved.ARM DUI 0802AJ
Non-ConfidentialID061814