IT用語集 › プログラミング › スタートアップコード

スタートアップコード

プログラミング Svenska → 更新: 2026-11-03

リセットから main() までの間に実行され、Cが前提とするメモリの状態を実際に成立させるコード。

Cは、初期値つきのグローバル変数はその値を持ち、それ以外はゼロで始まると約束している。デスクトップではOSのローダーがこれを整えるが、ベアメタルでは誰もやってくれないので、スタートアップコードが担う。.data セクションをフラッシュからRAMへコピーし、.bss をゼロクリアし、クロックを設定し、C++のコンストラクタを実行して、最後に main を呼ぶ。各アドレスはリンカスクリプトで定義されたシンボルから得る。

crt0(C runtime zero)という名はUnixに由来する。Cortex-Mのエントリポイントは Reset_Handler で、ベクタテーブルから見つかる。スタックポインタはハードウェアが自分でロードするので、全体をCで書くこともできる。ベンダーは通常アセンブリファイルで提供するが、グローバル変数が頑として初期値を保持しなくなるまで、誰もそれを読まない。

← 用語集に戻る