Hallo Besucher, der Thread wurde 2,7k mal aufgerufen und enthält 8 Antworten

letzter Beitrag von JeeK am

VERklärende bilder (sorry, aber das muss ich jetzt mal sagen)

  • hallo,
    danke danke danke für c64-wiki - ohne euch wäre vieles unmöglich, aber *JE-DES-MAL* wenn ich wieder anfange zu coden mache ich den/die gleichen fehler - und das liegt an den "unglücklichen" visualisierten erklärungen mancher assembler adressierungs-befehle (start: https://www.c64-wiki.de/wiki/Adressierung? ) - beispiel:


    Indirekte X-indizierte Zeropage-Adressierung

    meint ihr nicht (auch) dass folgendes bild vielleicht besser wäre:
    (die beiden oberen blöcke sind vertauscht)

    SO! sieht man wie richtig adressiert werden muss.
    (edit: ok, so sehen die pfeile jetzt nicht mehr ganz richtig aus, die müssten sich tatsächlich überkreuzen)


    diese (mmn) VERklärende "verdrehung" eurer bilder zieht sich durch viele grafiken vieler befehle;
    und bringt mich immer mal wieder durcheinander - vielleicht auch andere...


    so, jetzt hab ich's mal ausgesprochen; zeit hier ggf alle bilder zu ändern habe ich leider nicht, ich muss zurück an meinen code und die zeiger überall ändern - wie jedesmal :-) wenn ich wieder neu anfange und mich dabei an euren grafiken orientiere...


    alles gute!

  • meint ihr nicht (auch) dass folgendes bild vielleicht besser wäre:

    Nein. Das Originalbild sagt so auch nichts falsches aus.


    Eher führt es bei deiner Variante wieder zur Verwirrung, wenn die beiden Adreßhälften scheinbar grundlos in der Grafik über Kreuz getauscht werden. Das hilft niemand weiter, auch dir nicht.


    Die 65er-Familie ist Little-Endian, das mußt Du dir einfach mal einbleuen.

  • also das orginal finde ich persoenlich einleuchtend und logisch nachvolzeibar.


    es steht ja extra da $ll+X+1,$ll+X. daraus erkenn ich schon das die "zeigerangaben" zuerst das lowbyte dann das highbyte im speicher haben wollen.
    da ja X+1>X ist :D


    richtiger weise waere zwar die alternative darstellung aber das wuerde meiner meinung zu mehr verwunderung fuehren da
    1. die darstellung unuebersichtlicher waere und
    2.wie Mike schon schrieb littleendian


    Code
    1. x=0
    2. $ll=$fa
    3. value= mem[ (mem[$ll+x+1] shl 8)+mem[$ll+x] ]


    bigendian waere dann $ll+X,$ll+X+1

    Code
    1. x=0
    2. $ll=$fa
    3. value= mem[ (mem[$ll+x] shl 8)+mem[$ll+x+1] ]


    shl ist hiebei ein shiftleft x bits.


    salute

  • Ich finde die Visualisierung generell nicht sehr hilfreich/zielführend. Beide Darstellungen verkomplizieren imho den an sich einfachen Befehl, der auf einer allgegenwertigen Grundregel (Little Endian) basiert. Würde ein Codebeispiel immer diesen Schemata vorziehen...

  • Jeder bevorzugt andere Formen der Darstellung, um Sachverhalte zu verstehen. Insofern ist es nicht verwunderlich, dass manche die Bilder für überflüssig halten, andere aber für nützlich. Ich fand die Grafiken bislang hilfreich und hatte kein Problem mit der etwas unintuitiven Reihenfolge der High- und Low-Werte. Andersrum fände ich es genauso verwirrend. Insofern würde ich glaube ich keine Riesenarbeit reinstecken (denn das ist es glaube ich), alle Grafiken im Wiki konsequent zu ändern.

  • Ich finde die Visualisierung generell nicht sehr hilfreich/zielführend. Beide Darstellungen verkomplizieren imho den an sich einfachen Befehl, der auf einer allgegenwertigen Grundregel (Little Endian) basiert. Würde ein Codebeispiel immer diesen Schemata vorziehen...

    Da bin ich deiner Meinung. Deswegen habe ich immer diese Seite verwendet:
    https://web.archive.org/web/20…ems/CS_Main/6502/6502.htm
    Leider nur noch über Archive.org erreichbar, aber sehr schön aufbereitet. Insbesondere die detaillierten Opcode Erläuterungen.

  • Ich verstehe den persönlichen Ärger, wenn man über eine Anleitung oder Hilfestellung stolpert.
    Aber ich glaube auch, dass es über die Menge aller Betrachter immer jemanden gibt, der über die oder eine andere Darstellung stolpern kann. Ein solch ideale Darstellung, die niemals jemanden in die Irre leiten kann, wird es wohl nicht geben.
    Das sind einfach Dinge, die man sich bei der 6502-Familie einprägen muss, ohne dass man ständig "nachsehen" muss, wie Low- vor High-Byte, BCS entspr. >=, welche Befehle das Zero-Flag usw. ändern. Klingt jetzt altmodisch, aber wie in der Schule sollte man sich, jene Dinge sich so selbst aufbereitet notieren (quasi einen Spickzettel), so dass man selbst damit optimal zurecht kommt. Aus zuvor genannten und auch in den anderen Beträgen genannten Gründen, hielte ich es hier nicht für angebracht, die Darstellung im Wiki deswegen zu "stürzen".