TS: Begriff erklären

Beitrag lesen

Hello,

Tach!

Da wird die Adresse der Variable im Datensegment auf dem Stack übergeben

Warum sollte das so stattfinden? Der Compiler muss doch dabei nicht den Umweg über den Stack gehen, sondern kann die Adresse direkt angeben, wie bei anderen globalen Variablen auch.

Wo werden denn die variablen Teile von Funktionen instanziiert?

Auf dem Stack, weil sie am Ende aufgeräumt werden.

Der Code selber wird aus dem Static-Objekt/der Funktionsdefinition eines Codesegmentes geholt, muss also nicht kopiert werden. Aber alle Values werden auf dem Stack geführt und die Referenzen auf dynamische Speicherbereiche, statische Variablen und globale Variablen auch.

Warum? Das wäre nur eine unnötige Indirektion bei Werten, die nicht im Stack liegen.

Ich wüsste nicht, wo ein Compiler bzw. der "Executor" das sonst lassen sollte.

Wenn wir von der klassischen Architektur ausgehen - Programm, Datensegment, Heap, Stack - dann im Datensegment.

Ja, eben!

  • Call by Value
  • Call by Reference
  • Datensegment
  • Codesegment
  • Instruction Pointer

Funktionen werden auf dem Stack ausgeführt, bedeutet doch, dass ihre sämtlichen benötigten Werte und Referenzen dort übergeben werden. Der Funktionscode selber muss nicht kopiert werden. Er enthält Displacements relativ zum Stackbeginn für jede Variable. Für Objekte, statische und globale Variablen enthält der Code einen Load by Reference und bekommt eben diese Referenz vom Stack. Er kennt nur das Displacement der Adresse auf dem Stack. Handelt es sich um eine direkte Variablenübergabe (Kopie), enthält der Code nur ein Direct Load vom Stack. Direct Load bedeutet, dass er das Displacement der Variable auf dem Stack kennt.

Dass bei heutigen Konzepten vermutlich alles pef Load by Reference (indirekter Adressierung) gemacht wird, steht auf einem anderen Blatt. Darum sind ja moderne Programme so,aufgeblasen. Was myn früher noch mif 25kBytes programmieten konnte (Textverarbeotungen) benötigt heute fast eind eigen Festplatte :-O

Glück Auf
Tom vom Berg

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.