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

Langage C++ Discussion :

Appels récursifs et position du pointeur stack


Sujet :

Langage C++

  1. #1
    Membre actif

    Homme Profil pro
    autodidacte
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 207
    Points
    207
    Par défaut Appels récursifs et position du pointeur stack
    Bonjour,

    J'en suis à la page 483 de Thinking in C++ II, que je viens de relire 10x et pas moyen de comprendre.

    Il est question de savoir pourquoi la copie d'un objet complexe ne peut mis en tant que return value sur le stack après l'adresse-retour de la fonction. Ni être mis en tant que variable globale.

    Eckel parle de re-entrancy (fonctions interrupt ISR) qui interrompent la code de la fonction et écraseraient la return value sur le stack.
    Il parle aussi de la récursivité qui aurait le même effet.

    Pourquoi la re-entrancy et la récursivité placent automatiquement le pointeur du stack sur l'adresse-retour de la fonction ?

    Merci.
    Toujours à adapter le problème à la structure de la machine, mais se soigne pour faire l'inverse.

  2. #2
    Membre actif

    Homme Profil pro
    autodidacte
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 207
    Points
    207
    Par défaut
    Bon, j'ai un peu potassé un bouquin sur l'architecture de la couche machine.


    Si la valeur retour de f(i)est dans la pile après l'adresse retour, l'appel récursif f(i+1) géré intelligemment ferait en sorte que, en fin de procédure, la valeur retour de f(i+1) devrait être copiée dans la valeur retour f(i) de consulter l'adresse du retour dans f(i). Cela ne correspond pas au comportement standard de la pile.

    Si une variable globale était créée à chaque appel de la fonction, la récursion ne pourrait être gérée la valeur de retour f(i+1) étant "oubliée" dès le retour dans f(i).

    Une référence à l'objet retour est donc passée AVANT l'adresse retour, comme tout autre argument.
    Toujours à adapter le problème à la structure de la machine, mais se soigne pour faire l'inverse.

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

Discussions similaires

  1. Appels récursifs et stack overflow
    Par Argol_Medusa dans le forum C++Builder
    Réponses: 11
    Dernier message: 02/12/2008, 09h51
  2. Réponses: 2
    Dernier message: 06/05/2007, 22h37
  3. changer de class de style selon la position du pointeur
    Par yann_p dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2006, 18h38
  4. Réponses: 2
    Dernier message: 06/02/2006, 23h15
  5. [onresize] appels récursifs
    Par pmartin8 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/12/2005, 21h15

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