www.mikrocontroller.net

Forum: Compiler & IDEs AST / GCC-Dump Literatur


Autor: Jan Wegner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Serus, Moin und Hallo!
Wir entwickeln mittels WinAVR/GCC für ATMEGA16. Ich suche nach
Literatur, in der ich mich in den Aufbau der GCC-Dumps einarbeiten
kann, also was steht in .original, in .gimple etc. und wie sind die
Dateien aufgebaut. Wo steht das genau? Dank Euch! J

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau ist ein Dump für dich?

Mit ".original, in .gimple etc." kann ich nichts anfangen
(obwohl ich mir einbilde, den GCC einigermaßen zu kennen).

Autor: Jan Wegner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas z.B., also der abstrakte Sytaxbaum, den man auch mit GCC erzeugen
kann:

;; Function main (main)
;; enabled by -tree-original

@1      bind_expr        type: @2       vars: @3       body: @4
@2      void_type        name: @5       algn: 8
@3      var_decl         name: @6       type: @7       scpe: @8
                         srcp: main.c:15               size: @9
                         algn: 8        used: 1
@4      statement_list   0   : @10      1   : @11      2   : @12
                         3   : @13      4   : @14      5   : @15
                         6   : @16      7   : @17
@5      type_decl        name: @18      type: @2       srcp:
<built-in>:0
@6      identifier_node  strg: a        lngt: 1
@7      integer_type     name: @19      size: @9       algn: 8
                         prec: 16       min : @20      max : @21
@8      function_decl    name: @22      type: @23      srcp: main.c:14

                         extern
@9      integer_cst      type: @24      low : 16
@10     decl_expr        type: @2
@11     decl_expr        type: @2
@12     decl_expr        type: @2
@13     modify_expr      type: @7       op 0: @3       op 1: @25
@14     modify_expr      type: @7       op 0: @26      op 1: @27
@15     call_expr        type: @7       fn  : @28      args: @29
@16     call_expr        type: @7       fn  : @30      args: @31
@17     return_expr      type: @2
@18     identifier_node  strg: void     lngt: 4
@19     type_decl        name: @32      type: @7       srcp:
<built-in>:0
@20     integer_cst      type: @7       high: -1       low : -32768

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach du Schreck...  Willst du den GCC weiterentwickeln?

Es gibt eine GNU-info-Datei namens "gccint", da sollte sowas
drin stehen.  Kann man sich sicher auch als Buch ausdrucken,
wenn man will.

Ansonsten der alte Spruch: "All documentation files usually
end up in .c." ;-)

Autor: Jan Wegner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:-). Danke, den Spruch muß ich mir merken. Es geht um Syntaxanalyse bei
selbst verfaßten Programmen!

Autor: möchtegernprogrammierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
grab schaufel Ich hol die Leiche mal hoch, habe nämlich exakt das 
gleiche Problem: Ich suche Informationen um das Ergebnis von 
-fdump-translation-unit zu verstehen. Gibt es da mittlerweile mehr Doku? 
In den Internals kann ich nichts finden, falsch gesucht?

Autor: möchtegernprogrammierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube ich hab das Passende gefunden: \gcc\doc\c-tree.texi
Ist ein recht merkwürdiges Format was sich angeblich mit 
http://gnuwin32.sourceforge.net/packages/texinfo.htm umwandeln lässt, 
nur bei mir funktioniert das nicht richtig... anyway.

Autor: möchtegernprogrammierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur fürs Protokoll weil der Beitrag bei Google recht weit oben kommt: 
c-tree.lexi ist eigentlich unlesbar, erstmal weil ständig 
Formatierungsanweisungen (@irgendwas) den Lesefluss unterbrechen und 
zweitens weil sich das ganze nicht auf den Aufbau der Dumpdatei sondern 
auf den Quellcode vom GCC und dessen Datenstrukturen konzentriert.

Google hat mir noch 
http://search.cpan.org/~awin/GCC-TranslationUnit-1.00/ ausgespuckt, wer 
Perl kann ist da vielleicht gut beraten.

So, vielleicht hilft es ja Jemandem irgendwann mal.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
möchtegernprogrammierer schrieb:
> grab schaufel Ich hol die Leiche mal hoch, habe nämlich exakt das
> gleiche Problem: Ich suche Informationen um das Ergebnis von
> -fdump-translation-unit zu verstehen.

Das ist doch selbsterklärend:

>> @3      var_decl         name: @6       type: @7       scpe: @8
>>                          srcp: main.c:15               size: @9

In main.c wird in Zeile 15 eine Variable mit Name @6 vom Typ @7 
deklariert/definiert. Scope ist @8, Größe der Variable ist @9.

>> @6      identifier_node  strg: a        lngt: 1

Die Variable heißt also "a".

>> @7      integer_type     name: @19      size: @9       algn: 8
>>                          prec: 16       min : @20      max : @21

Typ ist ein skalarer Integer-Typ.  Ebenso wie a hat der Typ das 
Alignment 8 Bits.

>> @8      function_decl    name: @22      type: @23      srcp: main.c:14
>>                          extern

Scope der Variablendefinition, die Variable ist also lokal.

Etc.

> Gibt es da mittlerweile mehr Doku?

Diese Dunps brauchen keine Doku, sie dienen den GCC-Entwicklern, und die 
wissen, wie sie zu lesen sind.

Für Analysezwecke sind die Dumps ungeeignet, da sie nicht alle 
Informationen enthalten.  Die Dumps sind zudem nicht spezifiziert.

Wenn du statische Codeanalyse betreiben willst, dann ist ein Plugin das 
Mittel der Wahl.

> In den Internals kann ich nichts finden, falsch gesucht?

Die Internals sind nur als weichen Einstieg für GCC-Neulinge gedacht. 
Auskunft gibt die Quelle und wenn du da nix findst, frag in 
gcc-help@gcc.gnu.org.

möchtegernprogrammierer schrieb:

> Ich glaube ich hab das Passende gefunden: \gcc\doc\c-tree.texi
> Ist ein recht merkwürdiges Format was sich angeblich mit

Es ist TexInfo.  Es ist nicht "merkwürdig", es ist Text.  Lies ihn 
einfach ;-)

Ubrigens landet alles in ./gcc/doc in der GCC-Dokumentation, du kannst 
also einfach die lesen wenn dir texi nicht gefällt:

http://gcc.gnu.org/onlinedocs

Autor: möchtegernprogrammierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johann L. schrieb:
> Das ist doch selbsterklärend:
Für dich als GCC-Mitentwickler sicherlich! :-)

> Für Analysezwecke sind die Dumps ungeeignet, da sie nicht alle
> Informationen enthalten.
Schade.

> Die Dumps sind zudem nicht spezifiziert.
Das ist wohl wahr. :-)

> Wenn du statische Codeanalyse betreiben willst, dann ist ein Plugin das
> Mittel der Wahl.
Naja, eigentlich will ich nur mal ein bisschen rumspielen und gucken 
was so geht. Aber wie das so ist, man liest und liest und liest und die 
Zeit vergeht... Meine Hochachtung all denen die fähig sind diese 
Monsterdinger (Compiler) zu schreiben und zu warten...

> Ubrigens landet alles in ./gcc/doc in der GCC-Dokumentation, du kannst
> also einfach die lesen wenn dir texi nicht gefällt:
> http://gcc.gnu.org/onlinedocs
Ah prima, das dürfte sich leichter lesen lassen.

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.