Mindest Stackgröße

Mindest Stackgröße

Beitragvon TomCat » Di 16. Aug 2016, 14:27

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
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Mindest Stackgröße

Beitragvon Daryl_Dixon » Di 16. Aug 2016, 23:37

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
Benutzeravatar
Daryl_Dixon
DOS-Übermensch
 
Beiträge: 1304
Registriert: Di 30. Jun 2015, 18:35

Re: Mindest Stackgröße

Beitragvon TomCat » Mi 17. Aug 2016, 08:25

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?
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16

Re: Mindest Stackgröße

Beitragvon Daryl_Dixon » Mi 17. Aug 2016, 09:45

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
Benutzeravatar
Daryl_Dixon
DOS-Übermensch
 
Beiträge: 1304
Registriert: Di 30. Jun 2015, 18:35

Re: Mindest Stackgröße

Beitragvon wobo » Mi 17. Aug 2016, 18:14

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.
wobo
DOS-Guru
 
Beiträge: 555
Registriert: So 17. Okt 2010, 13:40

Re: Mindest Stackgröße

Beitragvon TomCat » Do 18. Aug 2016, 08:31

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!
TomCat
MemMaker-Benutzer
 
Beiträge: 87
Registriert: Do 1. Dez 2011, 17:16


Zurück zu Programmierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast