2. メモリからレジスタへのロード

2.1. ドキュメントの表記規則

表記: Rt, Rn は、特に明記されない限り ARM レジスタ R0-R7 を表します。immN は幅 N ビットの即値を表すため、imm5 は 0-31 の範囲に制約されます。[Rn + immN] は、Rn とオフセット immN を加算して得られるメモリアドレスの内容です。オフセットはバイト単位で測定されます。これらの命令は条件フラグに影響を与えます。

2.2. レジスタロード

  • ldr(Rt, [Rn, imm7]) Rt = [Rn + imm7] 32 ビットワードをロード

  • ldrb(Rt, [Rn, imm5]) Rt = [Rn + imm5] バイトをロード

  • ldrh(Rt, [Rn, imm6]) Rt = [Rn + imm6] 16 ビットハーフワードをロード

バイトまたはハーフワードがロードされる場合、それは 32 ビットにゼロ拡張されます。

指定された即値オフセットはバイト単位で測定されます。したがって ldr の場合、7 ビットの値により、最大オフセット 31 ワードで 32 ビットワード境界に整列した値にアクセスできます。ldrh の場合、6 ビットの値により、最大オフセット 31 ハーフワードで 16 ビットハーフワード境界に整列した値にアクセスできます。