IT-lexicon › Programmeren › Startupcode

Startupcode

Programmeren Svenska → Bijgewerkt: 2026-11-03

De code die tussen reset en main() draait en ervoor zorgt dat de aannames van C over het geheugen daadwerkelijk kloppen.

C belooft dat geïnitialiseerde globale variabelen hun beginwaarde hebben en dat al het andere met nul begint. Op een desktop regelt de loader van het besturingssysteem dat. Op bare metal doet niemand dat, dus moet de startupcode het doen: de .data-sectie van flash naar RAM kopiëren, .bss op nul zetten, de klokken instellen, C++-constructors uitvoeren en ten slotte main aanroepen. De adressen komen uit symbolen die in het linkerscript zijn gedefinieerd.

De naam crt0, C runtime zero, komt uit Unix. Op Cortex-M is het startpunt Reset_Handler, te vinden via de vectortabel; de hardware laadt de stackpointer zelf, dus het geheel kan in C worden geschreven. Fabrikanten leveren het meestal als assemblybestand dat niemand leest totdat een globale variabele hardnekkig weigert zijn beginwaarde te houden.

← Terug naar het lexicon