Rücksprungsadresse C



  • Wie ermittelt man in C die Rücksprungsadresse eine funktion die man vor bendigung verlassen hat, wenn es geht wie gehe ich wieder an der adresse zurück.



  • In Standard-C: gar nicht.

    Was genau möchtest Du auf welchem System mit welchen Werkzeugen machen?

    Und: Bitte Fragen vor dem Absenden noch mal durchlesen, ggf. Satzzeichen einfügen und Fehler rausmachen. Danke.



  • die is aufm stack also in deinem falle jetzt beim pc



  • häufig geht das indem du das 32-bit-wort hinter dem letzten funktionsargument ausliest:

    int
    func (int arg1, int arg2)
    {
      void *retadr=*(void**)((void*)(&arg2)+sizeof(arg2));
    }
    

    allerdings läßt sich mit der rücksprungaddresse in c nicht viel anfangen.

    Xion schrieb:

    die man vor bendigung verlassen hat

    mir ist nicht klar was du damit meinst. wenn du wieder in eine funktion zurückspringen willst, die du bereits verlassen hast, dann ist es die einfachste methode, die funktion einfach nochmal aufzurufen. das direkte zurückspringen geht nicht, weil du dann den code für die allokation des speichers für die lokalen variablen überspringst (von den funktionsparametern ganz zu schweigen). und die rücksprungaddresse würde dir dabei auch nicht weiterhelfen.

    du kannst dir auch mal die ansi-c-befehle setjmp() und longjmp() ansehen. vielleicht ist es das was du suchst.


Anmelden zum Antworten