IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 16-bits Assembleur Discussion :

Variables globales et locales pour main()?


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut Variables globales et locales pour main()?
    Bonjour à tous.

    Une petite précision concernant la fonction main().

    Puisque main() est aussi une fonction, dois-je considérer ses variables globales comme étant des variables locales et donc, réserver leur taille dans la pile comme pour les autres fonctions ou bien les déclarer dans le data segment?

    D'avance, merci.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    des variables globales n'appartiennent pas à une fonction, elles appartiennent à un module.

    Donc effectievemnt, leur emplacement est dans le data segment

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Juste pour être bien sûr de ce à quoi je fais allusion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int main()
    {
     
       int var1;
       char var2;
       return 0;
     
    }

    var1 et var2 sont bien des variables globales, n'est-ce pas?

    Cordialement.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Non, ce sont des variables locales à main() donc, sur la pile

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int var1;
    static in var2;
     
    void main(void)
    {
    int var3;
    static int var4;
    }
    • var1 : variable globales utilisable par tous les modules du programme ==> data segment
    • var2 : variable globale utilisable uniquement dans ce module ==> data segment
    • var3 : variable locale ==> stack segment
    • var4 : variable locale mais statique ==> data segment

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Merci ram-0000.

    C'est plus complexe que je pensais!

    var4 est elle accessible par d'autre fonctions (car elle est dans le data segment)?

    Cordialement.

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Citation Envoyé par flyingman Voir le message
    var4 est elle accessible par d'autre fonctions (car elle est dans le data segment)?
    Non, justement, et c'est la la subtilité, elle n'est accessible que dans la fonction mais elle conserve sa valeur d'un appel à l'autre (c'est pour cela qu'elle doit être dans le data segment).

    Autre difficulté, tu peux avoir une autre variable statique dans une autre fonction du même type et qui s'appelle aussi var4 (et cela ne doit pas se mélanger les pinceaux ).

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Merci ram-0000.

    Je pense avoir tout compris!

    Je ferme le poste.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. variables globales et locales
    Par une_tite_question dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 25/06/2008, 19h32
  2. Variable globale et locale
    Par momo70 dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/07/2007, 10h49
  3. variables globales ou locales
    Par exhortae dans le forum C
    Réponses: 6
    Dernier message: 09/04/2007, 02h29
  4. variable globale ou locale pour CurrentDB
    Par jibouze dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/05/2006, 18h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo