Hallo Besucher, der Thread wurde 5,9k mal aufgerufen und enthält 42 Antworten

letzter Beitrag von Claus am

Styleguide für Assembler

  • Ist das verständlich?

    Evtl. hattest Du mit dem Programmfragment mal die Absicht, eine Basen-Konversion (je nach Einsprungpunkt für binär, oktal, dezimal und hexadezimal) zu fahren, die Division als wiederholte Subtraktion ausgeführt.


    Allerdings funktioniert der Code oben sicher nicht so, wie geschrieben. Die Subtraktion ist nicht kommutativ. Vermutlich fehlt auch noch ein "sta zp" am Ende, trotzdem würde es nicht funktionieren. Ich stell' mal ganz keck die Frage: ist der Code aus einem bestehenden Programm oder hattest Du dir den grad aus den Fingern gesogen?

    das clc von neulich gehört gefälligst _nicht_ an den Anfang, auch wenn es eine hübsche Einrückung erzeugt.

    Um irgendeine Einrückung geht's mir da überhaupt nicht.


    Ich sehe die zwei Schritte (also: jeweils LDA/ADC/STA) der 16-Bit-Addition als eine Einheit an, die systematisch auch zur 32-Bit-Addition ausgebaut werden könnte. Damit bereitet das CLC den Gesamtprozeß vor und wird vor die gesamte Anordnung gestellt. Daß das alles über den Akku läuft, ist mir fast egal. Der Akku ist für mich da nur Erfüllungsgehilfe. Ich hab' da eher die Sicht der Zeropage als 256 8-Bit-Register, 128 16-Bit-Register oder 64 32-Bit-Register.


    Wenn ich also jede Zeile als langes Befehlswort sehe und deine enge Bindung des CLC an das erste ADC honorieren wollte, müßte das wie folgt aussehen:

    Code
    1. LDA zp :CLC:ADC #lo:STA zp
    2. LDA zp+1:NOP:ADC #hi:STA zp+1

    oder

    Code
    1. LDA zp :CLC:ADC #lo:STA zp
    2. LDA zp+1: :ADC #hi:STA zp+1

    Und da sag' ich ganz einfach mal: Nö.

  • Da würde ich mal ganz pragmatisch sagen: Das macht man so, wie es in der Situation am sinnvollsten ist. :D
    Bei einer 16/24/32-Bit-Addition kommt das CLC nach vorn (aus den erwähnten Gründen), bei dem BIT-Trick mit Mehrfacheinsprung kommt das CLC nach innen (aus den erwähnten Gründen). Da würde ich keine Dogmen einführen wollen...

  • Sorry, mrsid, aber da vergeht mir persönlich echt der Spaß fremden Code lesen zu können (oder müssen). Das ist schon hart zu deuten.

    Erstaunlich, ich finde den Code von @mrsid absolut spitzenmäßig lesbar. Liegt aber vielleicht daran, dass ich ziemlich exakt den selben Codingstyle verwende ^^ . Wie war das doch: "Source code is like farts: you can only stand your own." :prout: