Tach!
Funktionen werden auf dem Stack ausgeführt, bedeutet doch, dass ihre sämtlichen benötigten Werte und Referenzen dort übergeben werden.
Das wäre nicht sinnvoll, bei Werten, die global oder statisch sind.
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, weil sie ja mit seiner Hilfe mittels Displacement loziiert werden kann.
Warum soll man sowas tun wollen? Um unnötige Laufzeit beim Auflösen der Adressen zu verbraten? Warum genau sollte der Compiler nicht die Adresse auf dem Datensegment in den Programmcode kompilieren?
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.
Eine Kopie ist ja wohl kein Zugriff auf den globalen Wert.
Zu Direct Load finde ich nur Marketing- und Logistik-Seiten.
dedlfix.