Beiträge von detlef im Thema „Indirekte Adressierung“

    Sollte man dann nicht gleich die Finger von Assembler lassen?

    Nö. Wenn's schnell sein soll, kommt man auf 8-Bittern um Assembler nicht herum. Und wenn's im ROM laufen soll, sowieso nicht.

    Aber ordentlich kommentiert und strukturiert und Tricks und Kniffe auf ein Minimum reduziert (also nur da wo es wirklich notwendig ist) kann man auch in Assembler ganz ordentliche Programme schreiben. Natürlich findet man auch viel Spagetti-Code (weil JSR/RTS ja so langsam und uncool ist... :D ).

    Wie ich oben schon schrieb sind das Einzelfälle. Natürlich sind alle Mittel recht, wenn man ein taktgenaues Timing benötigt.
    Tektgenau heisst aber nicht, dass es automatisch immer schneller ist (wie manchmal behauptet wird).

    Und dadurch wird es trotzdem nicht zu einen guten Programmierstil und zu überichtlichem Code führt es schon mal gar nicht - höchstens vielleicht für die, die sich mit indirekter Adressierung nie auseinader gesetzt haben. ;)

    Und laufen Spiele etwa nicht im ROM? Ich kenne da eine ganze Menge. Ausserdem seit ihr oft sehr C64 fixiert. Es gibt ja auch noch den VC20, für den ich gerade anfange, Assemblerprogramme zu schreiben. Da geht in der Basisaustattung fast gar nichts im RAM.

    Doch, Speed. Fast alle Demos brauchen das. Bei dem JMP z.B. geht das schneller als der indirekte.

    Ja, ok. :thumbup:

    Dafür dauert aber das Schreiben des Zeigers wiederum länger. Das muss man sich dann im Einzelfall anschauen.
    Wenn man den Zeiger vor jedem JMP manipuliert, kann es sogar insgesamt langsamer werden. ;)

    Allein wie oft ich mit BIT / JMP gearbeitet hab..

    Selbstmodifizierend? Wie sieht das aus mit BIT?

    JMP-Adressen zu modifizieren ist eher eine Verschleierungs- als eine Programmiermethode. Da tun sich dann die Disassembler ziemlich schwer mit.
    Dafür gibt es JMP Indirekt oder man schiebt die Adressen auf den Stack und führt ein RTS aus.

    Es gibt definitiv keine Notwendigkeit für selbstmodifizierenden Code.

    Interessante Sichtweise mit dem ROM... wird bei mir niemals passieren, aber daran hatte ich noch nie gedacht, stimmt!

    Sag niemals nie. Wenn du mehr Assembler machst, wer weiss ob du nicht auch mal was auf eine Cartridge packen willst.
    Wenn du dann statt indirekter Adressierung nur selbstmodifizierenden Code produziert hast, machst du alles neu. ;)

    Wenn ich kein selfmod mache, dann brauche ich noch mehr freie Adresse in der Zeropage, um auch die Position im Screen und Color RAM zu speichern, oder siehst Du einen anderen Weg?

    Nö, aber einen Mangel an Zero-Page-Adressen hatte ich noch nie. Da gibt es immer genügend Adressen, die während des Programmablaufs nicht genutzt werden.
    Da bin ich aber auf dem C64 nicht so fitt. Ich habe das ja überwiegend auf dem PET gemacht.

    Ich weiß ja nicht wie viel du jetzt schon nutzt, aber ein guter Kandidat sind immer die Fließkomma-Akkus und irgendwelche Tape-Pointer.

    Zum anderen würde ich Selfmod immer ein eigenes Label gönnen.

    Selfmod geht eigentlich gar nicht. Irgendwann wills du so eine Routinen mal in ein ROM packen und stehst du ziemlich dumm da.
    Ausserdem gehören Daten und Code aus fundamental-religiösen Gründen immer getrennt. :D

    Der 6502 hat ja gerade die vielen indirekten und indizierten Adressierungsarten, damit man eben keinen selbstmodifizierenden Code schreiben muss.
    Ich würde mir so einen Quatsch gar nicht erst angewöhnen.

    Ich programmiere schon seit 40 Jahren Microcontroller und es gab noch nie eine Notwendigkeit für selbstmodifizierenden Code.