7205 Commits (343694c5499d2dd68896563bbbfc72604231deef)
 

Author SHA1 Message Date
David Srbecký 0d3dd5de44 Apply the negation reduction twice. 14 years ago
David Srbecký f1c1d34cba Simplify expressions by pushing negations inside. 14 years ago
David Srbecký dacfade7df Remove parenthesis from primitive value, identifies and expression statements. 14 years ago
David Srbecký 6faf690899 Parenthesize all expression to ensure correctness. 14 years ago
David Srbecký 459742f3ca Simplify short-circuit branches ("a && b" or "a || b"). 14 years ago
David Srbecký 7abcfaa3ed Conditional jumps now alone in basic block so that they can be expressed as single bool expression. 14 years ago
David Srbecký cefcba99d1 When conditional does not have any common reachable nodes, create only 'true' body. 'False' body is then implicitly the code after the conditional. 14 years ago
David Srbecký a455a6be02 Increased the reduction max count to 10000 14 years ago
David Srbecký 5b997bd44d Splitted the next statement finding algorithm to several reusable parts. 14 years ago
David Srbecký 110defad02 The next statement for the end of loop is start of loop 14 years ago
David Srbecký ba59de34fb When looking what follows a 'goto' statement, exit and enter code blocks. 14 years ago
David Srbecký e6269f491b Moved jump reduction to the Ast transform phase 14 years ago
David Srbecký 3643debd61 The Target of decompilation is now Board. It has plenty of nested 'for' loops and 'if's. 14 years ago
David Srbecký eaa7a63343 castclass 14 years ago
David Srbecký 3ca49743ae ldtoken 14 years ago
David Srbecký 49eeb49d1b newobj 14 years ago
David Srbecký 6e7f51fad7 Property access. (Detect properties by naming convention; still needs to be done properly) 14 years ago
David Srbecký 57192a1fdc stfld 14 years ago
David Srbecký 86ca89b055 callvirt 14 years ago
David Srbecký 6e4b542709 ldfld 14 years ago
David Srbecký 40e1edd7d9 Fixed all bugs that prevented the decompiler from running. 14 years ago
David Srbecký bc89f0a071 Target of decompilation is now AboutDialog in the Reversi game. 14 years ago
David Srbecký 42451cbd9d Added a Reversi game from http://www.codeproject.com/KB/game/reversi.aspx 14 years ago
David Srbecký 48c25a5821 Progress Report - Draft 1 14 years ago
David Srbecký 3aa8cc498c Initial GUI options loaded loaded from class 14 years ago
David Srbecký 598dcfd92c Bugfix in SimplifyTypeReferences - calling it for second time corrupted some type names 14 years ago
David Srbecký af14439362 Terminating all optimizations with exceptions 14 years ago
David Srbecký 27d8b0107d Include blocks jumping outside the parent not as being conditionals 14 years ago
David Srbecký a95748dc66 More GUI options 14 years ago
David Srbecký 27d70d6897 Reduce "String.Concat(a, b)" to "a + b" 14 years ago
David Srbecký 35f06e0a4b Label is not reference counted object anymore, it is just a string. During transform we in two passes - find all live labels - remove all dead ones (the rest). 14 years ago
David Srbecký 9aff0b724d Simplify the transform code by using extension methods. 14 years ago
David Srbecký 479918e7bc Remove MyBlockStatement. 14 years ago
David Srbecký ea50b09c0d NRefactory: Add NodeCollection.AddRange method 14 years ago
David Srbecký 07a2cb2a84 NRefactory: Set parent of child when it is added to collection 14 years ago
David Srbecký 932cf1a232 NRefactory: INode.Children type changed from List<T> to more general IList<T> 14 years ago
David Srbecký e42166ca85 Add NRefactory source code 14 years ago
David Srbecký 34c8127a9b Restore loop initializer 14 years ago
David Srbecký 5b48611b69 Replace variable name for integers with "i", "j", "k", etc... 14 years ago
David Srbecký 08528a768a Reduce 'if' statements in loops. 14 years ago
David Srbecký 5b8b80cc72 Restore loop iterator - move assignment from the end of loop. 14 years ago
David Srbecký af00ad101a Restore for loop condition. It is a simple pattern match. 14 years ago
David Srbecký 075c5bebdb Remove empty 'else body' of 'if' statement. 14 years ago
David Srbecký d086b446e8 Remove flowing redundant jumps at the end of Ast blocks: 14 years ago
David Srbecký 6ebd05c0fe Simplify type names. For example replace "System.Console.WriteLine" with "Console.WriteLine" because we have a "using System;" statement. Replace "Int32" with "int", etc... 14 years ago
David Srbecký 8643290a4c Remove redundant 'goto' statements in form: 14 years ago
David Srbecký ecad71d802 Added custom Ast classes for Goto and Label statements that track the reference count of a label. 14 years ago
David Srbecký 45bedc8d1d Try to reconstruct if statements. The following logic is used: Depending on the value of the condition, the control flow will branch to one of two locations - let's call then 'true entry' and 'false entry'. Nodes reachable *only* from the 'true entry' are assumed to be the 'true' body of the if statement. Similarly, nodes reachable only from the 'false entry' are the 'false' body. Nodes reachable from both 'true entry' and 'false entry' and not part of the if statement and are placed after it. 14 years ago
David Srbecký 356c0b0d2f Completely rewritten the Node tree structure. It became increasingly difficult to maintain the node links (Predecessors, Successors) consistent during transformations. So rather then keeping them consistent I have implemented an algorithm that can calculate the Predecessors or Successors for any given node. There are a few caches on the way so that the calculation does not calculate everything again every time. Affected caches are automatically flushed when a tree structure changes. This is implemented using 'collection with events'. 14 years ago
David Srbecký 7bf471eec3 Some set operations that will be need for 'if' simplification 14 years ago