読者です 読者をやめる 読者になる 読者になる

モジュール変数の初期化

H8 GCCで開発をしているが、以下の発見をした。

モジュール内で初期化ありのstatic変数を定義した場合に、
ゼロで初期化するか、それ以外で初期化するかで割り当てられるセクションが違う

以下のようにゼロで初期化した場合は、dataセクションに割り当てられる
static int abc = 0;

ゼロ以外で初期化した場合は、bssセクションに割り当てられる
static int abc = 1;

dataセクションは起動時にスタートアップルーチンで、ROM領域の初期化データをコピーされる
bssセクションは、同じくスタートアップルーチンで、ゼロに初期化される