8
votes

C Programme: __Start

Pouvez-vous m'aider à comprendre comment

__start


2 commentaires

Pourriez-vous nous donner un certain contexte? Où avez-vous vu __ start ?


Il est le point d'entrée.


3 Réponses :


17
votes

ici est un bon aperçu de ce qui se passe pendant le démarrage du programme avant principal . En particulier, il montre que __ start est le point d'entrée réel à votre programme à partir du point de vue du système d'exploitation.

Il s'agit de la toute première adresse à partir de laquelle la Le pointeur d'instructions commencera à compter dans votre programme.

Le code là-bas invoque certaines routines de bibliothèque d'exécution C juste pour faire du ménage, puis appelez votre principal , puis apportez les éléments et appelez Quitter avec le code de sortie Main retourné.


Une image vaut mille mots:

Diagramme de démarrage d'exécution d'exécution


2 commentaires

Lien génial !!! +1, est-il possible de citer les principales choses, au cas où le site sera en panne un jour, espérons-le.


Au cas où l'article meurt un jour à l'avenir - peut-être la machine de navigation pourrait aider .



-1
votes

_start est une fonction système d'exploitation .... qui est point d'entrée pour tout programme ... Comme notre compilateur sait sur Main (Main n'est pas une fonction pré-définie, il est défini par l'utilisateur, mais tout le compilateur le sait à leur sujet) La fonction appellera le principal et de ce point notre programme entre dans la CPU


1 commentaires

Je suppose que vous devez décrire !! Merci d'avoir essayé.



2
votes

Selon la norme C / C ++, Main () code> est le point de départ d'un programme. Si vous utilisez la fonction GCC, _start code> est le point d'entrée d'un programme C qui fait appel à principal () code>. Le travail principal de _start () code> fonctionne d'exécuter quelques tâches d'initialisation. xxx pré>

Si vous le souhaitez, la saisie du programme peut également être compilée avec - E code> Interrupteur dans GCC. P>

// $ gcc program_entry.c -e __start
// $ ./a.out
// custom program entr

#include <stdio.h>

void program_entry(void);


void
_start(void)
{ 
    program_entry();
}


void
program_entry(void)
{
    printf("custom program entry\n");
}


0 commentaires