006
10.03.2024, 12:48 Uhr
jennergruhle
|
Ich kann ja mal beschreiben, wie ich so etwas für gewöhnlich mache:
Mit dem Disassembler dZ80 (siehe http://inkland.org.uk/dz80/ ) wird zweimal disassembliert:
Einmal ganz stumpf zu (echtem und angeblichem) Assemblercode ohne genauere Betrachtung, die Datei nenne ich dann *_disasm.txt. Darin sind alle Adressen zu sehen, aber es sind noch nahezu keine Kommentare und manuellen Ersetzungen drin. Auch ist hier noch nicht herausgearbeitet, was tatsächlich Code ist und was Daten sind (Meldungen, Konstanten, Initialisierungsdaten für die Peripherie etc.).
Und dann noch einmal (mit dem Flag -l) so, dass alle tatsächlich vorkommenden Adressen als Labels wie "L0552" dargestellt werden, aber ohne die konkrete Auflistung aller Adressen. Das wäre der Assembler-Quelltext, den man auch wieder mit einem Assembler zu Binärcode umwandeln könnte (benannt *.asm).
Darin ergänze ich dann alle möglichen Kommentare, wo mir bestimmte Dinge aufgefallen sind wie Initialisierungsdaten für die Peripherie, Textmeldungen, Tokens für BASIC-Schlüsselwörter etc.
So habe ich das neulich auch beim BASIC für den Hübler-Grafik-MC gemacht - und das Endresultat erklärt zwar immer noch nicht alle Funktionen, aber man bekommt einen ungefähren Überblick. Das *.asm-File ließ sich mit dem Assembler "ZASM" dann auch wieder zu Binärcode assemblieren, der 1:1 zum Original-ROM identisch ist. |