RAM領域セクションの初期値コピーとゼロ・クリアを行います。
[所属]
標準ライブラリ
[指定形式]
#include <_h_c_lib.h>
void _INITSCT_RH(void * datatbl_start, void * datatbl_end, void * bsstbl_start, void * bsstbl_end)
[引数/戻り値]
| 
 | 
 | 
| 
 
datatbl_start : 
data属性セクション初期化テーブルの先頭アドレス 
datatbl_end : 
data属性セクション初期化テーブルの末尾アドレス 
bsstbl_start: 
bss属性セクション初期化テーブルの先頭アドレス 
bsstbl_end : 
bss属性セクション初期化テーブルの末尾アドレス 
 | 
 
なし 
 | 
 
[詳細説明]
RAM領域セクションのうち,data属性セクションの初期値をROM領域からコピーし,bss属性セクションのゼロ・クリアを行います。
第1,第2引数は,data属性セクションの初期化テーブルの先頭,末尾アドレスを渡します。
第3,第4引数は,bss属性セクションの初期化テーブルの先頭,末尾アドレスを渡します。
 
第1引数>=第2引数の場合,data属性セクションの初期化を行いません。
第3引数>=第4引数の場合,bss属性セクションのゼロ・クリアを行いません。
[使用例]
struct {
        void *rom_s;    //data属性セクションのROM上の先頭アドレス 
        void *rom_e;    //data属性セクションのROM上の末尾アドレス 
        void *ram_s;    //data属性セクションのRAM上の先頭アドレス 
} _C_DSEC[M]; 
  
struct {
        void *bss_s;    //bss属性セクションのRAM上の先頭アドレス 
        void *bss_e;    //bss属性セクションのRAM上の末尾アドレス 
} _C_BSEC[N]; 
  
_INITSCT_RH(_C_DSEC, _C_DSEC + M, _C_BSEC, _C_BSEC + N); 
 | 
 
備考  | .bssセクションの開始アドレスが0x100, サイズが0x50バイトであるとき,0クリアされるメモリは0x100,0x101,...,0x14e,0x14f番地ですが,初期化テーブルには0x100, 0x150と指定します。  |