Questa funzionalità che si attribuisce al caricatore è solitamente chiamata crt0 o crt0.o. Di solito ha un punto di ingresso chiamato __start
, che il sistema operativo trasferirà il controllo iniziale su.
Fa parte del codice di libreria C di base e prende il controllo del nuovo processo, in definitiva per richiamare il main
. A seconda dell'ambiente in cui viene eseguito, potrebbe essere necessario aprire effettivamente stdin & stdout e raccogli i parametri della riga di comando in un array di argv per passare al tuo principale. Inizialmente come si sospetta possa stabilire il registro del puntatore dello stack, tuttavia, ciò potrebbe essere già eseguito da exec, a seconda del corso. Può anche stabilire di nuovo un puntatore di dati (globale) a seconda dell'architettura (se ne usa uno) e del sistema operativo (se lo ha già fatto o meno).
Poiché C main
è una funzione C normale al 100%, gli argomenti verranno passati ad essa utilizzando la stessa convenzione di chiamata e l'utilizzo del registro come la maggior parte delle altre funzioni con la stessa firma. La convenzione di chiamata varia tra diversi compilatori e sistemi operativi, quindi una buona scommessa è decompilare il tuo C principale e vedere come accede è parametri.