ポインタテーブルを特定アドレスに配置する

テクニカル・ノート 44835

アーキテクチャ:

All

コンポーネント:

compiler

更新日:

2018/08/13 5:07

はじめに

本テクニカルノートでは、特定のアドレスにポインタ配列を配置する方法について説明します。

解決方法

@プレースメントをサポートするIARのC/C++コンパイラでは、2つの方法を使用できます。すなわち、配列を定数として宣言する、実行時に値を変更する必要がある場合は初期化されない変数として配列を宣言します。

1番目の方法は以下のようになります。

unsigned char * const RamAddresses[4] @ 0x8000 =
{
&object1,
&object2,
&object3,
&object4,
};

2番目の方法

この方法では、2つのアクションが必要です。

絶対配置(@シンボル)では、定数変数ではない初期化された変数を配置できません。そのため、配列を__no_initとして宣言します。

__no_init unsigned char * RamAddresses[4] @ 0x8000;

そして、アプリケーションのコード(main()の先頭など)において、この配列を初期化します。

RamAddresses[0] = &object1;
RamAddresses[1] = &object2;
RamAddresses[2] = &object3;
RamAddresses[3] = &object4;

全ての製品名は、それぞれの所有者の商標または登録商標です。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。