kurze Beschreibung <-| I2Z: Einzelheiten |-> offenen Aufgaben


Wie vergleicht man das Ergebnis?
Nach der erfolgreichen Übersetzung (das heißt, wenn der Assembler nicht mehr meckert) muss man noch überprüfen, ob das Resultat dem Original gleicht — und zwar bis auf's bit!
Auch hierzu möchte ich meine Erfahrungen gerne weitergeben:
Man nehme die HEX-Dateien und schneide mit einem guten Editor die Datenspalten heraus. Das ist nötig, wenn die Formate der beiden Dateien unterschiedlich sind. MAC/RMAC schreiben beispielsweise 16 bytes pro Zeile, Z80ASM und ASide dagegen 32. Wenn man die Adressen und Prüfsummen beseitigt und ausserdem immer zwei kurze MAC/RMAC-Zeilen in eine lange verwandelt hat, kann man (wiederum mit einem guten Editor) einen Textvergleich durchführen.

Doch oh Schreck: So viele Abweichungen! — Alles halb so schlimm. Im Code sind viele Sprungadressen versteckt, und wenn irgendwo nur ein byte dazwischen kommt oder fehlt, sind alle nachfolgenden Sprünge verschoben.

Wie findet man nun die Stelle, an der der Versatz hineingekommen ist?
Auch hier hilft ein Trick: Im Listing (LST- oder PRN-Datei) stehen die Adressen mit den OpCodes zusammen. Man nehme also alle Zeilen, die den RET-Befehl enthalten (kommt relativ oft vor), und vergleiche sie paarweise. An der Stelle mit der ersten Abweichung in der Liste schaut man am Besten mal nach ...

Noch ein paar Hinweise
Zum Suchen der RET-Befehle im Listing ist in PSPad der reguläre Ausdruck C9(\s+)RET geeignet. Man wähle dann die Such-Liste, die man mit Klick links neben der Liste auf das kleine Symbol (Seite mit umgeknickter Ecke) als neues Dokument öffnen kann. Genauso verfahre man mit dem zweiten Listing.
Die Spaltenauswahl aktiviert man in PSPad beim Mausziehen mit gehaltener ALT-Taste.

Natürlich schreit soviel Handarbeit nach automatisierenden Lösungen, womit ich hier eine Einladung zum Mitmachen aussprechen will.


top   Startseite   nächste Seite     Fragen oder Kommentare an mich   Datenschutz