Parameterübergabe über die Zeropage

Es gibt 55 Antworten in diesem Thema, welches 5.409 mal aufgerufen wurde. Der letzte Beitrag (7. März 2024 um 19:13) ist von JeeK.

  • Nein, ich diskutier jetzt nicht darüber, ob man den 65816 nicht vielleicht doch als 16-Bitter zählen müsste. :D

    Schade ;)

    Hängt ja nur von den Kriterien ab, welche man dafür heranzieht. Breite der ALU, Breite aller Register, Datenbusbreite oder was auch immer ... je nach Grundlage kann man dann zu unterschiedlichen Feststellungen kommen.

  • ... Anzahl der Adressleitungen?

    Ist kein wirklich brauchbares Kriterium, da es mit der Leistungsfähigkeit nicht wirklich gut korreliert bzw. kein aussagekräftige Einteilung ergibt.

    16 Adressleitungen haben nahezu alle unzweifelhaft als 8-Bit geltende CPUs (unabhängig davon, ob die am Gehäuse herausgeführt sind oder nicht, oder gar irgendwie multiplexed sind) und mir ist nicht bekannt, dass es eine Diskussion gegeben hätte, die solche als "16-Bit-CPUs" betrachten. ;)

  • Anzahl der Adressleitungen?

    Ist ein 68008 dann je nach Chipgehäuse ein 20- oder 22-Bit-Prozessor?

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • 16 Adressleitungen haben nahezu alle unzweifelhaft als 8-Bit geltende CPUs (unabhängig davon, ob die am Gehäuse herausgeführt sind oder nicht, oder gar irgendwie multiplexed sind) und mir ist nicht bekannt, dass es eine Diskussion gegeben hätte, die solche als "16-Bit-CPUs" betrachten. ;)

    In diesem Video wird am Anfang von "echten 8-Bittern mit nur 8 Bit breiten Adressen" gesprochen:

    Bitte melde dich an, um dieses Medienelement zu sehen.

  • In diesem Video wird am Anfang von "echten 8-Bittern mit nur 8 Bit breiten Adressen" gesprochen:

    Datenbusbreite gleich Adressbusbreite ist vor den Architekturen mit 32 Bit Datenbus-/Registerbreite eher die Ausnahme als die Regel und selbst dort dürften sich genug Beispiele für Abweichungen finden.

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Datenbusbreite gleich Adressbusbreite ist vor den Architekturen mit 32 Bit Datenbus-/Registerbreite eher die Ausnahme als die Regel

    Ja, aber eine technisch begründete Einordnung nach Bitbreiten ist nicht so trivial (gewesen).

  • Ich finde uebrigens dass der Stack am C64 ziemlich groß ist.

    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.

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • 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.

  • 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.p

    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.

    Die Superkraft des 6502-Stacks ist, dass man in gerade 3 Zyklen Werte raufschieben kann (günstig wie Zeropage-Zugriff) und dank Auto-Dekrement die Indexregister frei bleiben.

    Da kann man schon einige Dinge mit optimieren. =)

    (Ach so, und falls noch nicht erwähnt, via TSX kann man auch Stack-relativ adressieren, wenn auch etwas umständlich.)

  • Ja, aber eine technisch begründete Einordnung nach Bitbreiten ist nicht so trivial (gewesen).

    Da braucht man gar nicht herumstreiten. Das ist alles nur Defintiionssache. Man muss halt fairerweise immer dazu sagen, nach welcher Definitiion man geht, wenn man von einer z. B. 8-Bit-CPU spricht. Dann kann man noch die gemeinhin akzeptierte Einordnung voraussetzen, was natürlich immer die Leute auf den Plan ruft, die eine dazu andere Auffassung haben (und die Diskussion anzetteln).

  • Die Superkraft des 6502-Stacks ist, dass man in gerade 3 Zyklen Werte raufschieben kann (günstig wie Zeropage-Zugriff) und dank Auto-Dekrement die Indexregister frei bleiben.

    Aber dafür 4 Takte für runterziehen braucht, was ein Takt mehr ist als ein ZP-Restore. Das PLA setzt aber nebenbei auch gleich die Flags N, Z, was viele andere CPUs (vorwiegend aus dem Zilog- und Intel-Lager) bei Stack-Operationen nicht machen und eventuell einen gesonderte Test-Instruktion notwendig macht (sofern halt dann notwendig).

  • Die Superkraft des 6502-Stacks ist, dass man in gerade 3 Zyklen Werte raufschieben kann (günstig wie Zeropage-Zugriff) und dank Auto-Dekrement die Indexregister frei bleiben.

    Aber dafür 4 Takte für runterziehen braucht, was ein Takt mehr ist als ein ZP-Restore.

    Widerspricht ja nich meiner Aussage. Jedenfalls ist das schnelle Raufschieben allein schon ziemlich wertvoll. :)

  • Widerspricht ja nich meiner Aussage. Jedenfalls ist das schnelle Raufschieben allein schon ziemlich wertvoll. :)

    Natürlich, war auch nicht als Widerspruch gedacht. Sollte nur durch weitere Aspekte die Sache "abrunden": ;)