4.2.7 セクションアドレス演算子

セクションアドレス演算子の一覧を表 4.27に示します。

表 4.27

セクション演算子一覧

 

セクション演算子名

説明

1

__sectop("<セクション名>")

<セクション名>の先頭アドレスを返します。

2

__secend("<セクション名>")

<セクション名>の先頭アドレスに、<セクション名>のサイズを加算した値を返します。

3

__secsize("<セクション名>")

<セクション名>のサイズを返します。

[型]

__sectop の型は、void * です。

__secendの型は、void * です。

__secsizeの型は、unsigned long です。

 

[例]

例1: __sectop, __secend

#include <machine.h>
#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")};
 
#pragma section $BSEC
static const struct {
    void *b_s; /* 未初期化データセクションの先頭アドレス */
    void *b_e; /* 未初期化データセクションの最終アドレス */
} BTBL[]={__sectop("B"), __secend("B")};
#pragma section
#pragma stacksize si=0x100
#pragma entry INIT
void main(void);
void INIT(void)
{
    _INITSCT();
    main();
    sleep();
}

 

例2: __secsize

/* size of section B */
unsigned int size_of_B = __secsize("B");

[備考]

PIC/PID機能が有効なアプリケーションの場合、__sectopおよび__secendはリンク時のアドレスで処理します。

PIC/PID機能の詳細は、picおよびpidオプションと、「8.5 PIC/PID機能の利用」の項目をそれぞれ参照してください。