Seite 1 von 1

Mindest Stackgröße

Verfasst: Di 16. Aug 2016, 15:27
von TomCat
Hi,

wie groß muss eigentlich das Stack-Segment sein?
Bzw. wie tief nutzen die Int 21h oder Bios-Aufrufe den Stack?
Bisher habe ich einfach ca. 10.000 Byte dem Stack bereitgestellt, obwohl ich im eigenen Code allenfalls 20 Byte benötigt habe, da meine Unterprogramm-Tiefe nicht hoch ist.
Ich will halt nicht unnötig Bytes im ohnehin geringen Adressraum (real-mode) verbraten.

THX
TomCat

Re: Mindest Stackgröße

Verfasst: Mi 17. Aug 2016, 00:37
von Daryl_Dixon
Ich nehme mal an wir sprechen von einem DOS-System und nicht von Win95/98 oder so.
Den STACKS-Eintrag brauchst Du nur wenn eine bestimmte Software die Du nutzt, diesen
Eintrag benötigt (kann in den seltensten Fällen auch ein Treiber sein) oder wenn Du Fehler-
meldungen wie "Überlauf des internen Speichers" bzw "Exception Error 12" erhältst.

Ist beides nicht der Fall, würde ich ohne STACKS arbeiten. Bei Fehlermeldungen zu einem
Stapelüberlauf würde ich die Einstellung "STACKS=0,0" also Anzahl=0, Größe=0 versuchen.

Bei einem Hardware-Interrupt weist das Betriebssystem einen (1!) STACK aus der definierten
Anzahl zu. Bei einem "STACKS=0,0" geschieht dies nicht. Normalerweise fährt man damit
also am besten und man spart wie Du richtig geschrieben hast wertvollen Hauptspeicher.
Wenn Dein System mit diesem Wert Probleme haben sollte kannst Du zunächst die Werte
erhöhen oder den Eintrag mal komplett aus der Config.sys entfernen.

Standard-Wert ist 9,128

vG; Daryl_Dixon

Re: Mindest Stackgröße

Verfasst: Mi 17. Aug 2016, 09:25
von TomCat
Danke für die lange Antwort.

es geht mir nicht um den Eintrag in der Config.sys sondern um die Stackgröße die ich im eigenen Programm im Real-Mode definiere. Ruft mein Programm z.B. einen Int 21h auf, um z.b. auf die HDD zuzugreifen. Wird da der Stack-Pointer (SP) von DOS benutzt, oder definiert sich DOS einen eigenen Stack?

Re: Mindest Stackgröße

Verfasst: Mi 17. Aug 2016, 10:45
von Daryl_Dixon
TomCat hat geschrieben:Wird da der Stack-Pointer (SP) von DOS benutzt, oder definiert sich DOS einen eigenen Stack?
Dazu reicht jetzt mein Fachwissen nicht mehr aus. Ich gebe die Frage weiter an Deine anderen
Programmierkollegen ^^. Ich würde mal aus dem Bauch raus auf Antwort (a) tippen aber das
hilft Dir natürlich auch nicht weiter..

vG; Daryl_Dixon

Re: Mindest Stackgröße

Verfasst: Mi 17. Aug 2016, 19:14
von wobo
DOS, BIOS und TSR-Programme nutzen den Stack des Hauptprogramms (Architektur-Entscheidung von IBM). PC - Intern 3.0 empfiehlt für das Hauptprogramm mindestens einen Stack von 256 byte und verwendet in den eigenen Beispiel-Programmen immer einen Stack von 512 byte. Ich würde daher 512 byte ansetzen.

Re: Mindest Stackgröße

Verfasst: Do 18. Aug 2016, 09:31
von TomCat
Danke! das ist mal ne klare Aussage.

Da ich Bios-Aufruf auch von Unterprogrammen aufrufe, kann es sein, dass der Stackpointer bereits tiefer liegt darum definiere ich jetzt 1000 Byte Stack um auf der sicheren Seite zu sein.
Danke nochmal!