Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: ASM-Anzahl der Stapelspeicher Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 4.10.2011 20:13)
 Als Antwort auf ASM-Anzahl der Stapelspeicher von GeKue - 4.10.2011 12:51
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Mini M-Unit, Open-Mini Station, sonstige
Hallo zusammen.

> wei├č jemand - Dietmar sicherlich-, wieviel Stapelspeicher mit dem Befehl PSHA(X,H) innerhalb eines Assemblerprogramms benutzt werden k├Ânnen ?

Wieviel Stackspeicher wirklich frei ist, l├Ą├čt sich nicht so ohne weiteres sagen. Es h├Ąngt davon ab, ob und welche Assembler-Interruptroutinen der Anwender in das System eingebunden hat und welche BASIC-Befehle der Anwender verwendet. Jede Routine im OM-Betriebssystem hat unterschiedlichen Stackbedarf. Am meisten wird wohl von den PRINT-, PRINT#- und CLOSE#-Befehlen ben├Âtigt.
 
Der Stack wird bekanntlich immer von oben nach unten beschrieben.
 
Bei der Open-Micro und Open-Mini:
Der Stack beginnt auf Adresse $00ff. Die letzte vom Betriebssystem verwendete RAM-Speicherzelle liegt auf Adresse $00e5. Danach kommt das vom Anwender in Assemblerprogrammen benutzbare FREERAM auf Adresse $00e6. Der Stack darf deshalb nicht gr├Â├čer als $0100-$00e6 = 26 Byte sein. Unter der Voraussetzung, der Anwender benutzt FREERAM nicht.
 
Bei der Open-Midi:
Der Stack beginnt auf Adresse $013f. Davor steht das USER-RAM, also der RAM-Speicher, in dem die vom Anwender benutzten Variablen abgelegt werden. Bei 160 verwendeten Variablen bleiben f├╝r den Stack $0140-$0080-160 = 32 Byte.
 
Bei der Open-Macro:
Der Stack beginnt schon auf Adresse $0136, weil dahinter 9 Byte folgen, die f├╝r den Buffer der ESCI-Schnittstelle verwendet werden. Au├čerdem wird der Stack um 17 Byte nach vorne geschoben, wenn eine BASIC-IRQ-Interruptroutine gestartet wird. Der Stack beginnt w├Ąhrend der BASIC-IRQ-Interruptroutine also auf Adresse $013f-(9+16+1) = $0125. Davor steht das USER-RAM, also der RAM-Speicher, in dem die vom Anwender benutzten Variablen abgelegt werden. Bei 140 verwendeten Variablen bleiben f├╝r den Stack $0126-$0080-140 = 26 Byte.
 
Das ist alles aus Sicht des Betriebssystems. Wenn eine Anwender-Assemblerroutine per SYS aufgerufen wird, stehen wegen der R├╝cksprungadresse 2 Byte weniger Stack zur Verf├╝gung. Au├čerdem ben├Âtigen nat├╝rlich auch die Interruptroutinen des Betriebssystems einigen Stackspeicher. Bei Bedarf sollte der Anwender in eigenen Assemblerroutinen, die einen hohen Stackbedarf haben, also ein STI (bzw. SEI) und CLI verwenden.

Viel Spa├č mit den OM-Mikrocontrollern
Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Re: ASM-Anzahl der Stapelspeicher (von GeKue - 11.10.2011 10:33)