カスタマーサポートセンター

FAQ~よくある質問~ | FAQマスタ詳細表示

FAQ詳細情報

ID 10810515
FAQカテゴリ(大) コンパイラ
最終更新日 2016-01-24

質問内容

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

回答内容

ターゲット:すべて
コンポーネント:コンパイラ
公開日:2006年1月30日13時29

 

概要

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

 

解決策
IARのコンパイラの1つのバージョンは@による配置をサポートし、2つの使い方があります。定数として配列を宣言するか、実行時に値を変更する必要がある場合は非初期化として配列を宣言します。

第1の方法は次のようにします

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

 

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

絶対配置(@記号)は、初期化された非const 変数を許可していません。よって __no_init で配列を宣言します。

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

 

アプリケーション・コードで、例えば、main関数の初めで、配列を初期化します。

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

 

すべての製品名は、各社の商標または登録商標です。

参考資料URL