Post by kauhl-meersburghallo alle,
könnte mir jemand bitte einen Beispiel-Assembler-Code für eine
kompilierte C++-Objekt-Instanziierung (Konstruktor / Destruktor)
erstellen, zu Lernzwecken, d. h. wie hierbei die Unterprogramm-Technik
eingesetzt wird
So allgemein lässt sich das nicht beantworten, das kann jeder Compiler
so implementieren, wie es ihm passt. Ein nicht unwesentlicher Teil von
C++ besteht übrigens darin, dass das Compiler "kleine" Konstruktoren und
Destruktoren inlined, sie im Assembly gar nicht mehr explizit auftauchen.
Dazu kommt noch, dass es in C++ zwei verschiedene Arten der
Instanziierung gibt, nämlich die automatische auf dem Stack und die
explizierte per 'new' auf dem Heap. Der gcc generiert dafür
unterschiedliche Konstruktoren und Destruktoren.
Zur "Unterprogramm-Technik" lässt sich eigentlich nur sagen, dass ein
Konstruktor eine ganz normale Funktion ist, und ein Destruktor meist ein
ganz normale virtuelle Methode. Wenn ein Objekt per "delete" zerstört
wird, wird der Destruktor indirekt über die VMT aufgerufen, wenn es auf
dem Stack lag (und der Compiler somit den genauen Typ kennt), wird der
Destruktor direkt angesprungen. Es sei denn, der Compiler kann ihn
inlinen, dann fehlt der Destruktoraufruf u.U. komplett.
--
Gruß,
Sebastian