Hallo zusammen, ich habe zwei Varianten eines Programms, eine mit relativ wenigen Kommentaren und eine komplett kommentiert. Beim Kommentieren haben sich evtl. ein paar ungewollte Änderungen am Code durch copy&paste etc. eingeschlichen. Wie kann ich einen 100%-Vergleich der Funktion anstellen (Funktionstest am µC ist nicht realisierbar)? Da wir EEPROM-Befehle nutzen und der Compiler die Adressierung der EEPROM-Bereiche selbständig (und dynamisch) übernimmt, führt es ja nicht zum Erfolg, wenn ich den Maschinencode beider Versionen vergleiche, richtig? Vielen Dank für die Hilfe im Voraus. Max
ein Compiler macht doch immer das gleiche, die Kommentare werden eh komplett weggeschmissen. Es müsste also auch hex/bin Datei Identig sein.
Wenn Du den Code wirklich nur um Kommentare erweitert hast, sollte sich das vom Compiler erzeugte Binärfile nicht ändern - ein Vorher-Nachher-Vergleich mit einem geeigneten Diff-Tool ist also möglich. Zeigt Dir der Vergleich Änderungen, hast Du mehr als nur Kommentare geändert.. Warum versuchst Du es nicht direkt mit einem Diff-Tool?
Evtl. ist der Vergleich leichter nach dem Präprozessor, nämlich dann, wenn der die Kommentare gleich ganz wegwirft.
Danke für die schnellen Antworten: - Zum Thema Diff-Tool: Das habe ich versucht, jedoch hat sich durch die Umstruktierung des Codes nahezu jede Zeile verändert, wodurch das hinfällig wird. - Die Hex-Files unterscheiden sich laut Diff-Tool. Liegt das womöglich wie gesagt an den EEPROM-Funktionen, dessen Speicherbereiche der avr gcc jedes mal neu festlegt? Wie komm ich denn an die kommentar-befreite Variante nach dem Präprozessor ran? Ich nutze AVR-Studio mit dem avr gcc. Grüße Max
Max P. schrieb: > - Die Hex-Files unterscheiden sich laut Diff-Tool. Liegt das womöglich > wie gesagt an den EEPROM-Funktionen, dessen Speicherbereiche der avr gcc > jedes mal neu festlegt? Nein. Auch ein Compiler ist eine deterministische Maschine. Wenn die Allokierungen im Code in der gleichen Reihenfolge erfolgen, dann kommt auch immer die gleiche Adresslage raus. Da wird dir wohl nichts anderes übrig bleiben als: Zurück an den Start. Oder in den sauren Apfel beißen und Zeile für Zeile durchgehen.
Du könntest auch Testweise aus der kommentierten Version alle Kommentare ausfiltern und dann ein diff machen. Sollte mit einem "regluärem Ausdruck" klappen.
Oder beide Versionen präprozessieren (mit gcc -E) und ein Diff machen.
Ein super Vergleichs- und Mergetool für C: "Beyond Compare" von http:\\www.scootersoftware.com Unterscheidet zwischen funktionellen C-Code Änderungen und solchen ohne funktionellen Einfluss (Formatierung, Kommentare, Spaces, Leerzeilen etc...)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.