Kann ich ein PG5-Projekt zum modifizieren zu zerlegen?
FAQ #100676
Diese FAQ beschreibt die Möglichkeiten für den Fall, dass ein PG5-Projekt nicht verfügbar, aber noch ist eine vorhandene Anwendung muss geändert werden.
Demontage im allgemeinen
PG5 enthält ein Tool zum disassemblieren Code in eine PCD ausgeführt. Dieses Tool ("Disassembler") ermöglicht die Konvertierung hochgeladen (oder nur kompilierte) Code, der in "Binär" Form in die Darstellung im Unterricht Liste (IL) ist.
Der resultierende Code ist identisch mit dem Code von PCD ausgeführt, aber es ist nicht gleich zu den Quelldateien, aus denen das Projekt erstellt wurde. Die wichtigsten Unterschiede sind
- Die fehlende Symbolnamen; Alle Symbole werden statisch in der zergliederten Code behandelt, (während Symols in der Symbol-Manager "dynamische" Adressen zur Buildzeit verteilt haben können)
- Alle Kommentare sind im disassemblierten Code fehlt, (weil sie an die PCD heruntergeladen sind nicht)
- Code kann nur in IL demontiert werden. Es ist nicht möglich disassemblieren Code zurück zu Fupla oder eine HMI-Datei!
- Sprung-Etiketten sind im zergliederten Code fehlt (die Sprünge werden direkt angesprochen)
- Assembler-Direktiven (wie $IF etc.) sind nicht vorhanden im zergliederten Code (sie waren zum Zeitpunkt der Erstellung ausgewertet)
Kann ich zurückentwickeln ein Disassemled-Projekts?
Abhängig von den Tools für die Erstellung des Programms und der Komplexität des Programms wird diese Aufgabe schnell praktisch unmöglich. Demontage und Reverse Engineering z.B. Fupla-Programm ist fast unmöglich (gut, könnte wenn Sie Hunderte von Stunden verbringen und die Aufgaben der Anwendung sehr gut verstanden, Sie vielleicht Reverse-Engineering ein Fupla-Projekt verwalten).
Das Problem ist, dass eine FBox völlig anderen Code erstellen kann, in Abhängigkeit des Zielsystems, Optionen im Fenster "anpassen" etc. gebaut. Weitere kann dort Unterschiede zwischen einzelnen Versionen von ein und demselben FBox (da neue Features implementiert sind und Bug-Fixes angewendet werden).
In 99 % aller Fälle ist es sehr viel effektiver, Re-engineering eines vorhandenen Projekts für den Fall, dass die Ausgangsdateien nicht verfügbar sind.
Kann ich ein vorhandenes Projekt (z.B. Sollwert) ändern?
Ändern z. B. ein Sollwert bedeutet auch identifizieren und Reverse Engineering der relevante Teil des Codes. Wenn nur ein Sollwert werden kopiert muss, ist es möglich alle Code-Teile, die diesen Wert in ein Register laden suchen. Nachdem alle diese Teile gefunden werden muss der relevante Teil des Codes erkannt und verändert werden. Selbst wenn diese Änderung erfolgreich ist noch das ganze Projekt ist nur in "reinen" IL und weitere Modifikationen benötigen mindestens genauso viel Arbeit (wenn überhaupt möglich ist). Änderungen auf diese Weise sind nur für fortgeschrittene Experten empfohlen.
Für den Fall, dass nicht nur der Sollwert, sondern das Verhalten eines Teils eines Programms muss geändert werden ist die Komplexität, die wahrscheinlich bereits zu hoch (zumindest wenn das Programm im Fupla o.ä. geschrieben wurde).
Categories
Local FAQ Deutschland / Fupla
PG5 2.0 / Fupla
Last update: 29.05.2015 11:11
First release: 01.02.2007 09:15
Views: 4627