kostenloser Webspace werbefrei: lima-city


Caller und callee save Erklärung

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    my-easytools

    my-easytools hat kostenlosen Webspace.

    Kann mir jemand erklären was caller save und callee save beim Assembler genau machen? Ich habe bisher noch nirgendwo eine wirklich für mich verständliche Anleitung gefunden.
    Ist mit dem caller save einfach nur gemeint, dass der Basepointer der aufrufenden Funktion auf dem Stack gesichert wird?

    Edit: Ich hab grad noch mal nachgedacht. Ist mit callee save gemeint, dass übergebene Parameter im neuem Frame der aufgerufenen Funktion auf dem Stack gespeichert werden?

    Beitrag zuletzt geändert: 5.2.2014 11:01:38 von my-easytools
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Die machen gar nichts. Es geht darum was du, oder besser gesagt: eine von dir geschriebene Funktion, machen muss(t):

    * Für ein "callee-saved" Register muss die aufgerufene Funktion[0] ("callee") garantieren, dass es nach der Rückkehr den gleichen Wert hat wie vor dem Aufruf.

    * Bei einem "caller-saved" Register muss die Funktion ("caller"), die eine andere aufruft, selbst dafür sorgen, dass es gesichert wird, wenn sie den Inhalt nach dem Aufruf weiter benötigt.

    Um welche Register es sich dabei speziell handelt, hängt vom ABI ab, ist also unterschiedlich für jedes Register-Modell und jede Aufrufkonvention.

    Ich habe bisher noch nirgendwo eine wirklich für mich verständliche Anleitung gefunden.


    Das könnte daran liegen, dass die Vokabeln nicht ganz korrekt benannt sind ("saved" vs. "save").
    Oder daran, dass die Register oft auch anders genannt werden: volatil statt caller-saved und nonvolatil statt callee-saved.
    Oder daran, dass dieses Verfahren generell schlecht dokumentiert sein soll.
    Oder daran, dass heutzutage kaum noch ein Mensch direkt in Assembler|Maschinensprache programmiert.
    ...

    *update*
    Ein paar Links gibts aber schon:
    http://zhongshugu.wordpress.com/2011/02/23/caller-save-registers-and-callee-save-registers/
    http://au.answers.yahoo.com/question/index?qid=20101104075818AA8ixNn
    http://stackoverflow.com/questions/14590215/whats-the-difference-between-caller-and-callee-saved-registers

    [0] Subroutine, Procedur e.t.c., wie auch immer deine Programmiersprachumgebung das nennt.

    Beitrag zuletzt geändert: 5.2.2014 21:27:23 von alopex
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!