Başlangıç kodu
Sıfırlama ile main() arasında çalışan, C'nin bellek varsayımlarının gerçekten geçerli olmasını sağlayan kod.
C, ilk değer verilmiş global değişkenlerin bu değeri taşıyacağını, geri kalan her şeyin sıfırla başlayacağını vaat eder. Masaüstünde bunu işletim sisteminin yükleyicisi ayarlar. Çıplak donanımda kimse ayarlamaz, bu yüzden başlangıç kodu yapmak zorundadır: .data bölümünü flash'tan RAM'e kopyalar, .bss'i sıfırlar, saatleri kurar, C++ yapıcılarını çalıştırır ve sonunda main'i çağırır. Adresler bağlayıcı betiğinde tanımlanan sembollerden gelir.
crt0 adı, C runtime zero, Unix'ten gelir. Cortex-M'de giriş noktası Reset_Handler'dır ve vektör tablosu üzerinden bulunur; yığın işaretçisini donanım kendisi yüklediği için her şey C ile yazılabilir. Üreticiler genellikle bunu, bir global değişken ilk değerini tutmayı inatla reddedene kadar kimsenin okumadığı bir assembly dosyası olarak sunar.