3.1. 位置非依存

ARM® 命令セットおよび Thumb® 命令セットでは、どちらも PC 相対命令(例えば、BL)を使用することによって、位置非依存コード(つまり、再配置可能なコード)がサポートされます。

Note

これは、リンカによって作成されるイメージの種類である再配置可能な ELF とは異なります。

再配置可能なアセンブラコードを記述することはできますが、コードにアドレス定数を含めることはできません。コードの参照に使用するリテラルアドレスは、PC 相対のオフセットである必要があります。アドレスにアクセスする前に、ADD 命令を使用して PC が追加されます。

コードとデータは、どちらも位置非依存にすることができます。

RVCT では、C およびアセンブラ言語における位置非依存のコードとデータをサポートしており、再配置可能またはリエントラントなコードを記述することができます。ただし、C++ はサポートされていません。本章の残りの部分では、この方法について説明します。

詳細については、RealView Compilation Tools v3.0 Compiler and Libraries Guideの以下の章を参照して下さい。

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential