レジスタ相対式と PC 相対式

アドレスは、レジスタ相対式または PC 相対式として表現できます。

レジスタ相対式は、数値式と組み合わせた名前付きレジスタに評価されます。

PC 相対式は、ソースコード内では、数値式と組み合わせた PC またはラベルとして記述されます。また、[PC, #number] という形式で記述することもできます。命令内では、PC 値に数値オフセットを加算または減算した値として表現されます。アセンブラでは、ラベルおよび現在の命令のアドレスから必要なオフセットを計算します。オフセットが大きすぎる場合、アセンブラによってエラーが生成されます。

PC の値は命令セットに依存するため、PC 相対式を記述する際は、PC ではなく、ラベルを使用することを推奨します。

Note

  • ARM 状態の場合、PC の値は現在の命令のアドレスに 8 バイトを加算した値になります。

  • Thumb 状態の場合、以下のようになります。

    • BBLCBNZ、および CBZ 命令では、PC の値は現在の命令のアドレスに 4 バイトを加算した値になります。

    • ラベルを使用するその他のすべての命令では、PC の値は現在の命令のアドレスに 4 バイトを加算し、ワード境界で整列させるために、その結果のット [1] を 0 にクリアした値になります。

Show/hide

        LDR     r4,=data+4*n    ; n はアセンブリ時変数
        ; コード
        MOV     pc,lr
data    DCD     value_0
        ; n-1 DCD directives
        DCD     value_n         ; data+4*n はここを指している
        ; 追加の DCD ディレクティブ

Show/hide関連項目

概念
参照

『アセンブラリファレンス』

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311