wieviel Variablen?

21/05/2014 - 19:29 von Jens Kallup | Report spam
Hallo Gemeinde,

zur Zeit mache ich mir überlegungen über den Stack,
auf dem ja Variablen abgespeichert werden können.
In einzelnen Funktionen/Prozeduren ist es kein
Problem, da kann ich dank 2 Pass Compiler die Anzahl
überprüfen und entsprechend den Stack setzen.

Was aber, wenn ich eine Sprache Compilieren will, die
schwammig ist, kann man machen, um die Stackgröße zu
ermitteln, wenn die Variablen pro Modul unterschiedlich
ist?

Mache ich den Stack zu klein - crash, mache ich ihn
zu groß - ebenfalls crash :/

wie kann man nun den Stack Exception per ASM àhnlich
wie bei C++ try catch dazu zu bewegen, wenn dieser
zu klein ist, zu vergrößern?

Gruß
Jens
 

Lesen sie die antworten

#1 Stefan Reuther
22/05/2014 - 20:22 | Warnen spam
Jens Kallup wrote:
wie kann man nun den Stack Exception per ASM àhnlich
wie bei C++ try catch dazu zu bewegen, wenn dieser
zu klein ist, zu vergrößern?



Das kommt ja nun heftigst auf die Umgebung an.

Aktuelle Betriebssysteme allokieren einfach eine große Menge Adressraum
für den Stack, hinterlegen aber keinen Speicher. Wenn der Stack über-
làuft, gibt's einen Page Fault, dann wird entsprechend Speicher einge-
blendet, fertig.

Im DOS Real-Mode war es gàngig, in den Prozedurvorspann einen Aufruf an
eine Bibliotheksfunktion zu kodieren, die den Stackrahmen anlegt und
dabei prüft, ob genug Stack verfügbar ist. Mehr als geordnet das
Programm beenden kann man da aber auch nicht, denn wenn der Stack alle
ist, müsste man, um ihn zu vergrößern, höchstwahrscheinlich Adressen
umschreiben, und hat verloren, wenn jemand die Adresse einer
Stackvariablen irgendwo gespeichert hat.


Stefan

Ähnliche fragen