(De)compiler v.3.0

There are 311 replies in this Thread which has previously been viewed 47,174 times. The latest Post (December 4, 2025 at 9:07 PM) was by Larry.

  • Meine Decompiler Sammlung hat nun die Versionsnummer v3.0. Es sind eine Menge Bugfixes an diversen Decompilern von mir vorgenommen worden.

    Zudem, um das Archive zu vervollständigen, ist auch meine Austro Speed/Comp Compilersammlung mit im Achive.

    Damit alle was davon haben, lade ich das Archive hier mal hoch. Falls noch jemand einen Austro Compiler oder einen Decompiler sein Eigen nennt, der nicht in der Sammlung ist, Bitte unbedingt melden.:)

    Viel Spass beim (De)compilieren.


    Stephan.

  • Das nächste wichtige Feature bei den Decompiler wird sein, dass jeder Decompiler das Decompilat unter seinem individuellen Savenamen abspeichert. Man kann dann problemlos

    alle Decompiler auf einer 1581 kopieren, und einen nach dem anderen am Compilat testen. Zudem geht aus dem Savenamen auch hervor, welcher Decompiler das Decompilat erstellt hat.:)

    Achja, es wird auch eine Einstellmöglichkeit geben, um AustroSpeed E5 Compilate zu decompilieren.

  • Auch wird gefixt, die End of P-Code Erkennung ($4F). Einige Decompiler schießen weit über das Ziel hinaus. Wenn das Passiert, dann das Decompilieren abbrechen (Reset)

    Das Sternchen "*PRG" entfernen und ein Validate ausführen. Danach sollte der Basiccode nutzbar sein. Achja, denn Müll am Ende des Basiccodes auch entfernen.

  • Hallo Stephan, habe es hier abgelegt:

    /public/Forum64_Wolke/Software/C64/Programmiersprachen/Decompiler/

    ___________________________________________________________
    Meine Kreationen: Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link. | Please login to see this link.
    Avatar: Copyright 2017 by Saiki

  • Meine Decompiler Sammlung hat nun die Versionsnummer v3.2 erreicht. Die Neuerung 1 ist das Abspeichern des Decompilats unter individuellen Name.

    Zum Beispiel, "4 austro decomp" speichert das Decompilat mit dem Zusatz 4 im Dateiname ab. So kann man sich mehrere Decompiler auf einem D81-Image kopieren, und

    einen nach dem anderen am Compilat ausprobieren, ohne dass das vorangegangenen Decompilat überschrieben wird.:)

    Die Neuerung 2 besteht darin, dass fast alle Decompiler als Drive 8 nach Drive 9 decompilieren Versionen, hinzugekommen sind. Dazu müssen 2 Laufwerke, 8 & 9 aktive sein. Von Device 8 wird geladen, decompiliert und der fertige

    Basic Code nach Device 9 geschrieben. Das Decompieren wird dadurch stark beschleunigt.

    Als Neuerung 3 gibt es meinen Decompiler "i-decompiler-1d" und "i-decompiler-2d" der ganz unten im Directory zu finden ist. Es ist noch nicht die Final Version. Ich muss das Extrahieren der Data Zeilen noch verbessern.

    Ansonsten werden alle mir bekannten Austro-Comp, Austrospeed und Skyles Blitz Compiler unterstützt. Zudem erkennt der Decompiler viele Extensions. Auch die Austro-Directiven werden werden extrahiert.

    Das Infodisply dient zur Auffindung von Antidecompiler Schutzverfahren, ist aber noch im Aufbau und wird in ASM gecodet, weil es den Decompiler zu stark ausbremst. Sollte der Decompiler abstürzen, wird

    ein Infodisplay generiert, in dem alle wichtigen Werte der verwendeten Variabeln stehen.:)

    Als kleines leckerlie habe ich noch den Petspeed v4.0 Compiler gecrackt. Der ist gar nicht mal so schlecht.:)

  • Jep! Ist ja auch mittels Monitor und Compare Disk leicht herauszufinden. Ich hatte mir mal eine Routine für 2 Laufwerke gecodet. Unter einem Block war das Programm kurz.

  • Als kleines leckerlie habe ich noch den Petspeed v4.0 Compiler gecrackt. Der ist gar nicht mal so schlecht.:)

    Bei mir kracht der in Pass 3 mit einem CPU JAM (im Emulator, zwei Versionen von Vice probiert) bei drei Programmen, die ich versucht habe zu compilieren...:?:

    Please login to see this link.

    Please login to see this link.

    Please login to see this link.

  • Nutzt du eine original 1541?

    Ich hatte auch etwas compiliert, und das Compilat auch getestet, aber wie man sieht, steckt der Teufel im Detail. Ich werde das gleich mal untersuchen.

    Vielleicht ist in dem P-Code noch ein Trigger enthalten, der das verursacht. Derart fiese Sachen hatte ich häufiger in Anwendesoftware. Das blöde ist, man bekommt das auch nicht sofort mit.

    Ich kümmere mich um das Problem.:)

  • Nutzt du eine original 1541?

    Nein, emulierte 1541-II. Ich habe es mit einem oder zwei Laufwerken probiert, auch mit einer (emulierten) 1541. Immer dasselbe Problem.

    Please login to see this link.

    Please login to see this link.

    Please login to see this link.

  • Danke für die Infos. Ich werde gleich mal einige Testprogramme Compilieren. Übrigens, der Basic Code sollte bei Single-Laufwerken 85 Blocks nicht übersteigen. Desweiteren muss du mal testen, auf

    welchem Laufwerk dein Basic Code platziert werden muss. Bei PetSpeed v1 musste der Basic Code auf Drive 9, sonst gibt es einen $FCE2. Es hat gedauert, bis ich das verstanden hatte. Bei der V4

    ist das genau anders herum.

    PS: Warum kann kein Compiler, außer Austro-Comp/Speed, Dims mit Variabeln compilieren?

  • Danke für die Infos. Ich werde gleich mal einige Testprogramme Compilieren. Übrigens, der Basic Code sollte bei Single-Laufwerken 85 Blocks nicht übersteigen. Desweiteren muss du mal testen, auf

    welchem Laufwerk dein Basic Code platziert werden muss. Bei PetSpeed v1 musste der Basic Code auf Drive 9, sonnst gibt es einen $FCE2. Es hat gedauert, bis ich das verstanden hatte. Bei der V4

    ist das genau anders herum.

    Hmm...ich habe z.B. dieses hier probiert. Weit entfernt von 85 Blocks...

    Das habe ich bei Ein-Laufwerk-Betrieb auf der Petspeed-Diskette gespeichert und bei Zwei-Laufwerk-Betrieb auf einer leeren Disk in Laufwerk 9. Hat er auch gefunden und gelesen, nur eben nicht über Pass 3 hinaus.

    Quote

    PS: Warum kann kein Compiler, außer Austro-Comp/Speed, Dims mit Variabeln compilieren?

    Meiner kann das ansatzweise, sofern er die verwendete Variable als konstant erkennen kann (wobei sie dann ja wieder keine "Variable" ist...naja). Also bei mir ist es so, dass ich den Zugriff auf die Adressen, an denen die Variablen liegen, hart ins Kompilat schreibe. Das ginge nicht mehr, wenn die Größe dynamisch wäre. Man hätte dann min. eine Indirektion mehr drin. Außerdem liegt mir bei der Stringspeicher als Default am Ende des Kompilats und wächst nach oben (also andersherum als in BASIC). Auch das ginge nicht, wenn die Arrays dynamisch wären, bzw. müsste man dann ggf. immer wieder den Stringspeicher verschieben.

    Please login to see this link.

    Please login to see this link.

    Please login to see this link.

    Edited once, last by EgonOlsen71 (June 11, 2021 at 9:22 AM).

  • Wow, PETspeed, das war immer mein liebster Compiler, allerdings an den CBM Kisten.

    Der hat wirklich flinken Code produziert.

    Die Decompiler, - das wäre eigentlich ein Job für ein PC Programm ...

    Das könnte dann auch die Version automatisch ermitteln durch try and error.


    Wenn mir jemand genau erklärt, wie der P-Code aufgebaut ist, kann ich mich daran versuchen. :)

    Please login to see this link. --- Please login to see this link. --- Please login to see this link.

  • Die Decompiler, - das wäre eigentlich ein Job für ein PC Programm ...

    Hier hat jemand mal was in der Richtung gemacht: Please login to see this link.

    Please login to see this link.

    Please login to see this link.

    Please login to see this link.

  • So, da sind Trigger/Timebombs enthalten. Aber nicht mit mir. :kaputt

    Trigger 1.) In Adresse $C02F muss ein #$6A stehen, wenn Pass 3 ausgefüht wird.8)

    Mal sehen, ob da noch anderer fieser Kram enthalten ist. Ich stochere ungerne in P-Codes herum, weil das alles andere als einfach ist.


    PC-Notdienst zur Oma. Bitte fahren sie mal ihren Rechner runter... Kuze Zeiit später die Oma: Ich habe mein PC runtergefahren und als ich ihn wieder hochholen wollte, war er weg.:)

  • @Please login to see this link.

    Teste diese fixed Version doch Bitte mal an deinem Basic Code. Achja, Bitte kein Action Replay Fastloader nutzen, weil sonst das [A=0:IF A=1THENLOAD"PASS4B",8,1] nicht funktioniert. Der Lader hängt in einer Endlosschleife fest.

  • @Please login to see this link.

    Teste diese fixed Version doch Bitte mal an deinem Basic Code.

    Jetzt läuft es! Also zumindest konnte ich meine Testprogramme damit kompilieren.

    Please login to see this link.

    Please login to see this link.

    Please login to see this link.

  • Na, da bin ich aber beruhigt.:puhh: Danke für das Testen. :)

    Ich erinnere mich noch an dem RTL-64 Compiler. Das war eine Nummer, den zu cracken. Drei Monate hatte ich dafür benötigt.

    Übrigens, die PetSpeed P-Codes habe ich auch fast alle herausbekommen. Das Abarbeiten der P-Codes durch das Runtime Modul, ist doch auch sehr gewöhnungsbedürftig, im Gegensatz zum Austrospeed.