Beiträge von sparhawk im Thema „Parameterübergabe über die Zeropage“

    Auch wenn man auf einen RAM Bereich fixiert ist, reizt man den doch quasi nie aus - Ausnahmen gibt es immer.

    Ich kann mir vorstellen, dass man den problemlos vierteln oder gar achteln kann in der Praxis - wenn nicht noch mehr.

    Ich denke dass man vermutlich die unteren 128 Bytes problemlos verwenden kann. Allerdings hat der Stack jetzt nicht SO viele Vorteile. Mit PUSH oder POP kann man den nicht sinnvoll verwenden, weil ja nur der Akku das kann. Bleibt also nur die Adressierung über die Adresse, aber da kann man dann auch jede beliebige andere Adresse vewenden, da man dadurch auch nicht schneller wird als wenn man ZP verwendet.

    Den einzigen Vorteil den ich bisher gelegentlich genutzt habe ist dass ich ein paar Zwischenvariablen draufgelegt habe und dann mit TSX darauf zugegriffen habe. Dann verliert man aber das X Register.

    wenn man die Parameter runter-popped, muss man sie ja meist auch wieder irgendwo zwischenspeichern

    Das funktioniert am PC aber problemlos und ist dort gängige Technik. Warum sollte das hier problematischer sein?

    Weil ...

    1. ... der C64 einen sehr winzigen Stack hat.

    und

    2. ... die neueren CPUs darauf auch optimiert wurden dass man den Stack als bequemen Zwischenspeicher nutzt.

    Beim C64 hast du kaum Befehle um mit dem Stack vernünftig arbeiten zu können. Es geht zwar, und ich habe das auch schon gemacht, aber es istnicht sonderlich komfortabel. Bei anderen CPUs z.B. 68k oder Intel, hast du diverse Register und Stackbefehle um Framepointer zu setzen und dann darüber auf deinen Variablenbereich zugreifen zu können.