|Perl: the Markov chain saw|
Introspector Breakthroughby mdupont (Scribe)
|on Nov 15, 2003 at 04:44 UTC||Need Help??|
HI all, thought you might like to try out this new toy gui for introspecting the gccs asts. I have released a new version of the introspector, a proof of concept, something you can look at and learn from. A self contained demo program that allows you to graphically explore the structure of a almost any program that you can compile with the gcc!
One important aspect that is should mention is that this providers a fulll access to the gcc interface via code generation and subsequent execution. That creates the possibiltly to require that the users of that generated code make thier derivitive works under the gpl. That just might solve the wishes of those who want only free software to interface to the gcc..
It features the introspector ice cube. The ice cube contains a superfast and compressed extract of the semantic data of the program that can be compiled in as a lib and loaded into memory in miliseconds. The graph alogorithms are also very fast on constant size arrays of object!
Hopefully It will become the new way to embed a static semantic resources into your new programs. We then slice the ice cube for each by Property into nice thin C arrays. It has a gcc tree extracted out of the dotgnu pnet idlasm code emit function. That means i have reversed engineered an free software component.
The results of the reverse engineering are stored in a rdf repository. This has cwm,perl, and shell scripts doing semantic processing of the data. An redland RDF repository is used to interface into the guts of the gcc compiler.
The asts are serialized by a patched gcc3.4 experimental -fdump-translation-unit, you can find the source code in the cvs. That is emitted into rdf and converted by a perl script into a ice cube.
That are served into slices of data, each attribute its own vector that has the length of the number of nodes in the selected rdf property. There is in fact a matrix of all the objects and relationships between them stored in the Array.
This program contains just the linux binary of the program that has all this data compiled into an ICE Cube : That is emitted into a inline c array for compiling into the target program.
Please join up on the list, come to the #introspector chat zone on freenode.net, and jabber me at firstname.lastname@example.org
and a screenshot here : ScreenShot