AST / GCC-Dump Literatur

Gast #363338
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
Gast #363340
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
Gast #2791390
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?
Gast #2791468
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.
Persönliche Seite #2791505
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
Gast #2791529
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren