Forum: Compiler & IDEs Vergleich des reinen C-Codes


von Max P. (Gast)


Lesenswert?

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

von Marcus K. (marcusk)


Lesenswert?

ein Compiler macht doch immer das gleiche, die Kommentare werden eh 
komplett weggeschmissen. Es müsste also auch hex/bin Datei Identig sein.

von Gast (Gast)


Lesenswert?

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?

von Klaus W. (mfgkw)


Lesenswert?

Evtl. ist der Vergleich leichter nach dem Präprozessor,
nämlich dann, wenn der die Kommentare gleich ganz wegwirft.

von Max P. (Gast)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

den gcc mit der Option -E aufrufen

von Gast (Gast)


Lesenswert?

Den Assemblercode in den acg-gcc Listfiles vergleichen ?!

von Gast (Gast)


Lesenswert?

Den Assemblercode in den avr-gcc Listfiles vergleichen ?!

von Karl H. (kbuchegg)


Lesenswert?

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.

von Frank B. (frank_boe)


Lesenswert?

Du könntest auch Testweise aus der kommentierten Version alle Kommentare 
ausfiltern und dann ein diff machen.
Sollte mit einem "regluärem Ausdruck" klappen.

von der mechatroniker (Gast)


Lesenswert?

Oder beide Versionen präprozessieren (mit gcc -E) und ein Diff machen.

von Peter (Gast)


Lesenswert?

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...)

von Max P. (Gast)


Lesenswert?

genial, danke

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
Noch kein Account? Hier anmelden.