Hi! I have a desire to create a universal recompiler for. NET applications. Number of .NET languages are constantly growing, and the quality of CIL assembly is not always high.
I'm going to parse through CECIL .Net assembly, represent it as program graph (formal dataflow model with selectors / distributors by Davis & Keller), perform set of high level algoritmic optimizations and than unload program graph back to CIL. Want to choose a universal internal representation of the program (to avoid the transition between representations) and apply those optimizations that are formally proven. Speed of the optimizer has secondary importance, the main - quality of results. While this idea at the stage of deliberation. I'm looking for algorithms that would be applicable for this task. So, I need an advice - which way to go? Maybe you have some experience in this area? What can be read apart from Dragon Book and Steven Muchnik? PS I've met ProGuard project http://proguard.sourceforge.net/ that implements lots of optimizations, but it manipulates with java bytecode. Is there a similiar project for. Net? -- -- mono-cecil
