命令とディレクティブの再配置

再配置は、ターゲットアドレスが不明なラベルまたはアセンブリ時に計算できないラベルをソースコードが参照できるようにする、オブジェクトファイルに組み込まれたディレクティブです。アセンブラによってオブジェクトファイル内に再配置が生成され、リンカによってそれがターゲットの配置アドレスに解決されます。

データディレクティブ DCBDCWDCWU, DCD、および DCDU の構文に外部シンボル(IMPORT または EXTERN を使用して宣言されたシンボル)が含まれている場合に、アセンブラによってそれらが再配置されます。その結果、アドレスの下位 8、16、また 32 ビットがリンク時に使用されます。

REQUIRE ディレクティブでは、現在のセクションが存在する場合に必ずターゲットラベルが存在するようにリンカに指示する再配置が生成されます。

アセンブラでは、以下の命令の再配置を生成できます。

LDR(PC 相対)

Thumb ダブルワード命令を除くすべての ARM 命令と Thumb 命令を再配置できます。

PLDPLDW、および PLI

すべての ARM 命令と Thumb 命令を再配置できます。

BBL、および BLX

すべての ARM 命令と Thumb 命令を再配置できます。

CBZ および CBNZ

すべての Thumb 命令を再配置できますが、これらの命令は分岐範囲が制限されるため非推奨です。

LDC および LDC2

ARM 命令のみ再配置できます。

VLDR

ARM 命令のみ再配置できます。

ワイヤレス MMX のロード命令

ARM のワードロード命令およびダブルワードロード命令のみ再配置できます。

命令の型に応じて、使用されるラベルが以下のいずれかの要件を満たす場合に、アセンブラによって上記の命令の再配置が生成されます。

BBL、および BX の各命令では、以下の場合にもアセンブラによって再配置が生成されます。

Note

RELOC ディレクティブを使用すると再配置をさらに細かく制御できますが、それには ABI の知識が必要です。

Show/hide

    IMPORT sym    ; sym は外部シンボル
    DCW sym       ; DCW では 16 ビットしか出力されないため、sym のアドレスの
                  ; 下位 16 ビットはリンク時に挿入される。

Show/hide関連項目

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