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: FwPush oder pusha? Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von GeKü - 13.11.2010 14:42)
 Als Antwort auf Re: FwPush oder pusha? von Bert - 12.11.2010 17:29
GeKü nutzt:  Open-Mini, Open-Midi, Open-Macro
Bert, nochmals Danke,

da wird es wohl der Rechenstack sein. Da müßten sich Zahlen nach Basic-Berechnungen mittels Pop wieder herausholen lassen...

Beste Grüße

> > Danke Bert,
> >
> > - was passiert, wenn Du 100 mal FwPush machst ? Z.B. mit den Zahlen 1-100. Findest Du dann alle auf dem Stack wieder ?
> > Gruß, GeKü
> >
> >
> > > > Hallo Bert,
> > > >
> > > > habe mir das noch nicht angesehen. Was passiert genau ? Was verstehst Du unter aufgeräumt ?
> > > > Kannst Du mir den Unterschied der Befehle auführlicher erklären ?
> > > > Grß, GeKü
> > > >
> > > > > > Hallo,
> > > > > > begehe ich da einen Denkfehler? Mit den OM-Firmwareroutinen kann man im Inline-Assembler unter anderen FwPush (oder FwPop)  aufrufen. Kann man dasselbe nicht auch mit den Befehlen pusha (oder pula) erreichen, was ja auch kürzeren Code ergäbe? Ergibt sich bei den genannten  Firmwareroutinen ein Vorteil? Kann mir da jemand auf die Sprünge helfen? Danke.
> > > > > > Viele Grüsse
> > > > > > Bert
> > > > >
> > > > > Hallo,
> > > > > doch ein Gedankenfehler. Nach meinen eben gemachten Erfahrungen ergibt sich ein Unterschied zwischen FwPush und psha sowie FwPop und pula dadurch, dass die Firmwareroutine augenscheinlich den Stack aufgeräumt hinterlässt. Weiss jemand den genauen Mechanismus? Gibt es bei der OM einen Unterschied zwischen Stack und Rechenstack?
> > > > > Viele Grüsse
> > > > > Bert
> > >
> > > Hallo Gekü,
> > > nach meinem bisherigen Wissen in Assemblerprogrammierung verlangte jedes push oder pop oder ein Sprung in die Subroutine das Gegenstück, damit der Stack "aufgeräumt", das heißt, dass der Stapelzeiger auf den korrekten Wert zeigt. Ein Beispiel:  Nach jsr xyz darf kein einzelnes push oder pop erfolgen, sonst ist bei rts die Rücksprungadresse falsch. Daran habe ich mich bisher gehalten und bin gut dabei gefahren. Erst als ich durch Zufall Dietmars Programm Pizza-Uhr entdeckte, fiel mir in der Datei I2CLCD.PRO auf, dass Dietmar neben FwPush auch psha einsetzte. Der Unterschied ist mir nicht ganz klar, nur eines bemerkte ich beim Testen, dass psha nach wie vor auch immer ein pula verlangt, während FwPush nicht zwingend ein FwPop erfordert. Auch in OC-Basic, das habe ich dann gleich probiert, kann ich unentwegt einseitiig "pushen" oder "poppen", ohne dass der Stack erkennbar "überläuft" oder das Programm abstürzt. Nun bin ich erstmal ziemlich verblüfft und verstehe das ganze nicht so richtig. Möglicherweise  organisiert das OM-Betriebssystem den Stack unterschiedlich. Dietmar spricht in der OM-Doku einmal vom Stack, vom Rechenstack oder vom Gosubstack. Es wäre schön, wenn  jemand das Stackhandling auf der OM leicht verständlich erklären könnte.
> > > Viele Grüsse
> > > Bert
>
> Hallo Gekü,
> nein, das hieße ja, dass 100 freie Ramstellen dafür da sein und auch geopfert werden müssten. Ich habe es getestet. Nach 8 Einträgen mit FwPush ist Schluss.
> Viele Grüsse
> Bert

 Antwort schreiben

Bisherige Antworten: