• [^] # Re: setjmp et longjmp

    Posté par . En réponse au message essayer de recupérer l'adresse de retour d'une fonction. Évalué à 2. Dernière modification le 24 juillet 2020 à 14:22.

    La valeur de retour dans la pile doit être juste avant ptr.

    void (*adresseDeRetour) (void) = (&ptr - 1); // Arythmétique pointeur, on se décale de la taille de la variable... soit un pointeur.

    Mais ça ne marchera pas car tes registres SP et BP ne seront pas remis à jour correctement.

    En gros si ça marchait, tu irais finir main puis au retour de main tu retournerais dans addOne pour la finir pour retourner encore dans main.

    Avec l’aléa que l’accès à la variable v du main est relative au BP courant... donc tu jardines probablement la pile n’importe où, donc là ou ça casse une adresse de retour.

    Édit: en fait baulieu à déjà répondu. J’avais lu trop vite.