111 Commits (858e6c08caae9fae0bd216ae08b1ca6fb519f18e)

Author SHA1 Message Date
Eusebiu Marcu c3ef036fd6 Add debugger core. 15 years ago
David Srbecký 9387dadfc8 Fixed conditional loops 15 years ago
David Srbecký 0d522ba136 Fixed some missing gotos and labels 15 years ago
David Srbecký a420fd6d38 Don't use SimplifyMacros because it breaks the method Body 15 years ago
Daniel Grunwald 949b6adac4 Improve naming of local variables (remove the 'I' in interface names) 15 years ago
Daniel Grunwald 7d4252373c Improve automatic variable names. 15 years ago
Daniel Grunwald 185e9e4331 Fix decompiling "this". 15 years ago
Daniel Grunwald 949e7c2378 Move decompiler code into ICSharpCode.Decompiler; add very simple integration with ILSpy. 15 years ago
David Srbecký 36f29f72e5 Moved everything into top-level directory 15 years ago
David Srbecký 69753642eb Support for try-catch blocks 15 years ago
David Srbecký eed0f0af6c Refactoring the data model 15 years ago
David Srbecký 44e1258b5f Updated decompiler to the new Cecil 15 years ago
David Srbecký a26fd6c0b2 Decompiling class 'ReversiForm'. 15 years ago
David Srbecký edc9e53590 Stack analysis for methods that include exception handlers 15 years ago
David Srbecký 7b93f5762b Constructors of multidimensional arrays. 15 years ago
David Srbecký b89018a214 Added class constructors 15 years ago
David Srbecký 4beea5c6a1 Completely rewritten ByteCodeExpressions. 15 years ago
David Srbecký 9f4dc8611d Rename StackExpression to ByteCodeExpression 15 years ago
David Srbecký f5a3052d23 generate code for dup 15 years ago
David Srbecký 15e2cd828a Rename unknown bool variables to "flag". 15 years ago
David Srbecký a87a9468e7 Track the type of expression. 15 years ago
David Srbecký c3aedb0b3c Preliminary support for multi-dimensional arrays 15 years ago
David Srbecký 3f268ec44f ldsfld 15 years ago
David Srbecký 059e91cdd9 Do not include explicit reference to 'this' 15 years ago
David Srbecký 6faf690899 Parenthesize all expression to ensure correctness. 15 years ago
David Srbecký 459742f3ca Simplify short-circuit branches ("a && b" or "a || b"). 15 years ago
David Srbecký e6269f491b Moved jump reduction to the Ast transform phase 15 years ago
David Srbecký eaa7a63343 castclass 15 years ago
David Srbecký 3ca49743ae ldtoken 15 years ago
David Srbecký 49eeb49d1b newobj 15 years ago
David Srbecký 6e7f51fad7 Property access. (Detect properties by naming convention; still needs to be done properly) 15 years ago
David Srbecký 57192a1fdc stfld 15 years ago
David Srbecký 86ca89b055 callvirt 15 years ago
David Srbecký 6e4b542709 ldfld 15 years ago
David Srbecký 40e1edd7d9 Fixed all bugs that prevented the decompiler from running. 15 years ago
David Srbecký af14439362 Terminating all optimizations with exceptions 15 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). 15 years ago
David Srbecký 479918e7bc Remove MyBlockStatement. 15 years ago
David Srbecký 5b48611b69 Replace variable name for integers with "i", "j", "k", etc... 15 years ago
David Srbecký af00ad101a Restore for loop condition. It is a simple pattern match. 15 years ago
David Srbecký d086b446e8 Remove flowing redundant jumps at the end of Ast blocks: 15 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... 15 years ago
David Srbecký 8643290a4c Remove redundant 'goto' statements in form: 15 years ago
David Srbecký ecad71d802 Added custom Ast classes for Goto and Label statements that track the reference count of a label. 15 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. 15 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'. 15 years ago
David Srbecký ff56995219 Reduce some 'goto's in loops to 'break' and 'continue'. 15 years ago
David Srbecký 7df6c364c6 Non-conditional branch does not have 'fall-through' node as successor. 15 years ago
David Srbecký b310187433 GUI debugging controls 15 years ago
David Srbecký 693bb16488 Generate the initial graph. 15 years ago