LDR と STR (イミディエートオフセット)

イミディエートオフセット、プレインデクスイミディエートオフセット、またはポストインデクスイミディエートオフセットを使ったロードとストア。

Show/hide構文

op{type}{cond} Rt, [Rn {, #offset}]        ; イミディエートオフセット
op{type}{cond} Rt, [Rn, #offset]!; プレインデクス
op{type}{cond} Rt, [Rn], #offset           ; ポストインデクス
opD{cond} Rt, Rt2, [Rn {, #offset}]        ; イミディエートオフセット、ダブルワード
opD{cond} Rt, Rt2, [Rn, #offset]!; プレインデクス、ダブルワード
opD{cond} Rt, Rt2, [Rn], #offset           ; ポストインデクス、ダブルワード

各項目には以下の意味があります。

op

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

LDR

レジスタロード

STR

レジスタストア

type

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

B

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

SB

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

H

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

SH

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

-

省略(ワード)

cond

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

Rt

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

Rn

メモリアドレスのベースとなるレジスタを指定します。

offset

オフセットを指定します。offset が省略されると、アドレスは Rn の内容となります。

Rt2

ダブルワードのロード/ストアで使用する追加のレジスタを指定します。

命令セットによっては、一部のオプションを使用できない場合があります。

Show/hideオフセットの範囲と使用可否

Table 10 はオフセットの範囲とこれらの命令の使用可否を示します。

Table 10. オフセットと使用可否、LDR/STR、ワード、ハーフワード、バイト

命令イミディエートオフセットプレインデクスポストインデクス
A32、ワードまたはバイト [a]-4095 ~ 4095-4095 ~ 4095-4095 ~ 4095
A32、符号付きバイト、ハーフワード、符号付きハーフワード-255 ~ 255-255 ~ 255-255 ~ 255
A32、ダブルワード-255 ~ 255-255 ~ 255-255 ~ 255
32 ビット、T32、ワード、ハーフワード、符号付きハーフワード、バイト、符号付きバイト[a]-255 ~ 4095-255 ~ 255-255 ~ 255
32 ビット、T32、ダブルワード-1020 ~ 1020 [c]-1020 ~ 1020 [c]-1020 ~ 1020 [c]
16 ビット、T32、ワード[b]0 ~ 124 [c]該当なし該当なし
16 ビット、T32、符号なしハーフワード[b]0 ~ 62 [d]該当なし該当なし
16 ビット、T32、符号なしバイト[b]0 ~ 31該当なし該当なし
16 ビット、T32、ワード、Rn は SP[e]0 ~ 1020 [c]該当なし該当なし

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

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

[c] 4 の倍数

[d] 必ず 2 の倍数

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


Show/hideレジスタの制約条件

プレインデクスおよびポストインデクス形式では、RnRt とは異なる必要があります。

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

プレインデクスおよびポストインデクス形式では、RnRt2 とは異なる必要があります。

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

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

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

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

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

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

Show/hidePC の使用

A32 命令の場合:

  • Rt での PC は LDR ワード命令で使用でき、Rn での PC は LDR 命令で使用できます。

  • Rt の PC は STR ワード命令で使用でき、Rn での PC はイミディエートオフセット構文の STR 命令(Rn にライトバックしない形式)で使用できます。ただし、これは非推奨です。

これらの A32 命令では、他の PC の使用は許されません。

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

Show/hideSP の使用

SP は Rn で使用できます。

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

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

Show/hide

    LDR     r8,[r10]            ; R10 のアドレスから R8 を読み取る。
    LDRNE   r2,[r5,#960]!; R5 のアドレスの 960 バイト上のワードから
                                ; R2 を条件付きで読み取り、
                                ; R5 を 960 バイト分インクリメントする。
    STR     r2,[r9,#consta-struc]   ; consta-struc は、
                                    ; 0 ~ 4095 の範囲内の定数を求める式。

Show/hide関連項目

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