www.mikrocontroller.net

Forum: Compiler & IDEs Vergleich des reinen C-Codes


Autor: Max P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marcus Kunze (marcusk)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Max P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
den gcc mit der Option -E aufrufen

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Assemblercode in den acg-gcc Listfiles vergleichen ?!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Assemblercode in den avr-gcc Listfiles vergleichen ?!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank Boe (frank_boe)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: der mechatroniker (Gast)
Datum:

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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: Max P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genial, danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.