LDR と STR (レジスタオフセット)

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

Show/hide構文

op{type}{cond} Rt, [Rn, +/-Rm {, shift}]   ; レジスタオフセット
op{type}{cond} Rt, [Rn, +/-Rm {, shift}]!; プレインデクス       ; A32 のみ
op{type}{cond} Rt, [Rn], +/-Rm {, shift}   ; ポストインデクス      ; A32 のみ
opD{cond} Rt, Rt2, [Rn, +/-Rm]   ; レジスタオフセット、ダブルワード ; A32 のみ
opD{cond} Rt, Rt2, [Rn, +/-Rm]!; プレインデクス、ダブルワード     ; A32 のみ
opD{cond} Rt, Rt2, [Rn], +/-Rm   ; ポストインデクス、ダブルワード    ; A32 のみ

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

op

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

LDR

レジスタロード

STR

レジスタストア

type

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

B

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

SB

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

H

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

SH

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

-

省略(ワード)

cond

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

Rt

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

Rn

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

Rm

オフセットとして使用される値を保持するレジスタを指定します。-Rm は T32 コードでは使用できません。

shift

任意に指定できるシフトです。

Rt2

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

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

Show/hideオフセットレジスタとシフトオプション

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

Table 11. オプションと使用可否、LDR/STR(レジスタオフセット)

命令+/-Rm [a]シフト  
A32、ワードまたはバイト [b]+/-RmLSL #0 ~ 31LSR #1 ~ 32 
  ASR #1 ~ 32ROR #1 ~ 31RRX
A32、符号付きバイト、ハーフワード、符号付きハーフワード+/-Rm該当なし
A32、ダブルワード+/-Rm該当なし
32 ビット、T32、ワード、ハーフワード、符号付きハーフワード、バイト、符号付きバイト[b]+RmLSL #0 ~ 3  
16 ビット、T32、ダブルワード以外のすべて[c]+Rm該当なし

[a] +/-Rm となっているところでは、-Rm、+Rm、または Rm を使用できます。+Rm となっているところでは、-Rm を使用できません。

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

[c] Rt、Rn、Rm はいずれも R0 ~ R7 の範囲にします。


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

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

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

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

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

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

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

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

  • LDRD 命令では、RmRt および Rt2 と異なる必要があります。

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

Show/hidePC の使用

A32 命令の場合:

  • Rt での PC は LDR ワード命令で使用でき、Rn での PC はレジスタオフセット構文の LDR 命令(Rn にライトバックしない形式)で使用できます。

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

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

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

Show/hideSP の使用

SP は Rn で使用できます。

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

Rm での SP は A32 命令で使用できますが、これは非推奨です。

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

Rm での SP の使用は、T32 状態では許可されていません。

Show/hide関連項目

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