David Srbecký
af00ad101a
Restore for loop condition. It is a simple pattern match.
15 years ago
David Srbecký
075c5bebdb
Remove empty 'else body' of 'if' statement.
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:
...
goto labelX;
labelX: command();
15 years ago
David Srbecký
ecad71d802
Added custom Ast classes for Goto and Label statements that track the reference count of a label.
...
Added an Ast transform to remove dead labels. (first Ast transform in program, I expect many more to come. Some stuff should be rewritten to use these explicit transforms)
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ý
b310187433
GUI debugging controls
15 years ago
David Srbecký
0bff44d922
Create class for each node type
15 years ago
David Srbecký
aba6b0950c
Split method body to basic blocks
15 years ago
David Srbecký
37d40932d9
Convert ByteCodeCollection to new data representation: StackExpressionCollection;
...
Modify the generating code to use this data representation
15 years ago
David Srbecký
ed413b7ec3
Move stack analysis to the ByteCode class
15 years ago
David Srbecký
b7486c3221
Move StackBehaviour code to separate file
15 years ago
David Srbecký
53eed43bf5
Moved typing code to ByteCode.GetType()
15 years ago
David Srbecký
0fe95f6b0b
Use custom data structure to store bytecode sequence
15 years ago
David Srbecký
a9ab824805
Get type for stack slots (partially implemented); Types are stored as Cecil TypeReferences
15 years ago
David Srbecký
238605c831
Initial stack analysis implementation:
...
Verify that the stack sizes are consistent - ie at a given location the stack size is statically known and constant.
Keep track of instruction which pushed a given value on the stack. (Not handling the potential problem at control merge points - this problem does not occur in the quick sort algorithm)
The state of the stack is outputted as a comment in the source code
15 years ago
David Srbecký
af3a01cd44
Rename files
15 years ago
David Srbecký
7753b88bc5
Use NRefactory to create method bodies -> CodeDom not used anymore
15 years ago
David Srbecký
e5500abf75
Output the skeleton code using NRefactory instead of CodeDom
15 years ago
David Srbecký
f0640bb4ef
Moved some code into separate file;
...
Added a list of non-macro opcodes
15 years ago
David Srbecký
d43bf783ba
Load the assembly and create a skeleton for each type (just 'public class' now)
15 years ago
David Srbecký
c3368ce842
Added reference to the Mono.Cecil library
15 years ago
David Srbecký
a6ff8910b4
Started the decompiler project - just a form with a text box where the generated source code will go
15 years ago
David Srbecký
9e5fc484c7
Added a QuickSort program
15 years ago