A.1.6 セクションのアドレスを参照する

セクションアドレス演算子を使用することでセクションのアドレスやサイズを参照することができます。

__sectop ("<セクション名>")  <セクション名>の先頭アドレスを参照します。

__secend ("<セクション名>")  <セクション名>の先頭に<セクション名>のサイズを加算した値を参照します。

__secsize ("<セクション名>")  <セクション名>のサイズを生成します。

【記述例】

#pragma section $DSEC
static const struct {
        void *rom_s; /* 初期化データセクションのROM上の先頭アドレス値を取得 */
        void *rom_e; /* 初期化データセクションのROM上の最終アドレス値を取得 */
        void *ram_s; /* 初期化データセクションのRAM上の先頭アドレス値を取得 */
} DTBL[]={__sectop("D"), __secend("D"), __sectop("R")};

スタートアップ・ルーチンのresetprg.cファイルのINITSCT関数内では、ROMからRAMへの転送、及び未初期化領域の初期化を実行します。この実行の際、dbsct.cファイル内に記述されている__sectop、__secendで取得したアドレスを参照しています。