David Srbecký
							
						 
						
							 
							
							
							
								
							
								40e1edd7d9 
								
							
								 
							
						 
						
							
							
								
								Fixed all bugs that prevented the decompiler from running.  
							
							 
							
							... 
							
							
 
							
							The output of decompilation is saved in file output.cs
Unsupported expressions are handled a bit more gracefully -
for example: IL__callvirt(set_AutoSize(), (IL__ldfld(titleLabel, @this )), 1);
this is will eventually become this.titleLabel.AutoSize = 1; 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								bc89f0a071 
								
							
								 
							
						 
						
							
							
								
								Target of decompilation is now AboutDialog in the Reversi game.  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								42451cbd9d 
								
							
								 
							
						 
						
							
							
								
								Added a Reversi game from  http://www.codeproject.com/KB/game/reversi.aspx  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								48c25a5821 
								
							
								 
							
						 
						
							
							
								
								Progress Report - Draft 1  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								3aa8cc498c 
								
							
								 
							
						 
						
							
							
								
								Initial GUI options loaded loaded from class  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								598dcfd92c 
								
							
								 
							
						 
						
							
							
								
								Bugfix in SimplifyTypeReferences - calling it for second time corrupted some type names  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								af14439362 
								
							
								 
							
						 
						
							
							
								
								Terminating all optimizations with exceptions  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								27d8b0107d 
								
							
								 
							
						 
						
							
							
								
								Include blocks jumping outside the parent not as being conditionals  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								a95748dc66 
								
							
								 
							
						 
						
							
							
								
								More GUI options  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								27d70d6897 
								
							
								 
							
						 
						
							
							
								
								Reduce "String.Concat(a, b)" to "a + b"  
							
							 
							
							
 
							
						 
						
							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ý
							
						 
						
							 
							
							
							
								
							
								9aff0b724d 
								
							
								 
							
						 
						
							
							
								
								Simplify the transform code by using extension methods.  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								479918e7bc 
								
							
								 
							
						 
						
							
							
								
								Remove MyBlockStatement.  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								ea50b09c0d 
								
							
								 
							
						 
						
							
							
								
								NRefactory: Add NodeCollection.AddRange method  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								07a2cb2a84 
								
							
								 
							
						 
						
							
							
								
								NRefactory: Set parent of child when it is added to collection  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								932cf1a232 
								
							
								 
							
						 
						
							
							
								
								NRefactory: INode.Children type changed from List<T> to more general IList<T>  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								e42166ca85 
								
							
								 
							
						 
						
							
							
								
								Add NRefactory source code  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								34c8127a9b 
								
							
								 
							
						 
						
							
							
								
								Restore loop initializer  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								5b48611b69 
								
							
								 
							
						 
						
							
							
								
								Replace variable name for integers with "i", "j", "k", etc...  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								08528a768a 
								
							
								 
							
						 
						
							
							
								
								Reduce 'if' statements in loops.  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								5b8b80cc72 
								
							
								 
							
						 
						
							
							
								
								Restore loop iterator - move assignment from the end of loop.  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								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ý
							
						 
						
							 
							
							
							
								
							
								d086b446e8 
								
							
								 
							
						 
						
							
							
								
								Remove flowing redundant jumps at the end of Ast blocks:  
							
							 
							
							... 
							
							
 
							
							- Continue at the very end of loop
 - Empty Return at the very end of method
 - Goto at the very end of 'if' body, if the goto jumps right after the whole '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ý
							
						 
						
							 
							
							
							
								
							
								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ý
							
						 
						
							 
							
							
							
								
							
								7bf471eec3 
								
							
								 
							
						 
						
							
							
								
								Some set operations that will be need for 'if' simplification  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								dda481d0fe 
								
							
								 
							
						 
						
							
							
								
								Maintain node links at all levels, not just at the top one.  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								ff56995219 
								
							
								 
							
						 
						
							
							
								
								Reduce some 'goto's in loops to 'break' and 'continue'.  
							
							 
							
							... 
							
							
 
							
							Do not output 'goto' for simple fall-through to next node. 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								7df6c364c6 
								
							
								 
							
						 
						
							
							
								
								Non-conditional branch does not have 'fall-through' node as successor.  
							
							 
							
							... 
							
							
 
							
							Add explicit 'goto' statement after each basic black.
More GUI debugging options. 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								b310187433 
								
							
								 
							
						 
						
							
							
								
								GUI debugging controls  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								693bb16488 
								
							
								 
							
						 
						
							
							
								
								Generate the initial graph.  
							
							 
							
							... 
							
							
 
							
							Output the graph as nested blocks. 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								0bff44d922 
								
							
								 
							
						 
						
							
							
								
								Create class for each node type  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								faff1bf5a9 
								
							
								 
							
						 
						
							
							
								
								Working on graph reduction algorithm.  (Graph creation and presentation is still missing)  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								aba6b0950c 
								
							
								 
							
						 
						
							
							
								
								Split method body to basic blocks  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								a43af72f9e 
								
							
								 
							
						 
						
							
							
								
								Bugfix - keep return if it is labelled.  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								22494bde37 
								
							
								 
							
						 
						
							
							
								
								Define local variables when value is first assigned to them  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								82d3debe87 
								
							
								 
							
						 
						
							
							
								
								Do not output the very last return statement  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								9eb2441490 
								
							
								 
							
						 
						
							
							
								
								Test on the compiler optimized version of quicksort  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								29b95cd28c 
								
							
								 
							
						 
						
							
							
								
								Remove some parenthesis  
							
							 
							
							
 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								acdac3ecf5 
								
							
								 
							
						 
						
							
							
								
								Join consecutive expression together if possible  
							
							 
							
							
 
							
						 
						
							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ý
							
						 
						
							 
							
							
							
								
							
								475eab39cf 
								
							
								 
							
						 
						
							
							
								
								Move code from Util class to  
							
							 
							
							... 
							
							
 
							
							- ByteCode.PopCount
 - ByteCode.PushCount 
							
						 
						
							15 years ago  
						
					 
				
					
						
							
							
								 
								David Srbecký
							
						 
						
							 
							
							
							
								
							
								0fe95f6b0b 
								
							
								 
							
						 
						
							
							
								
								Use custom data structure to store bytecode sequence  
							
							 
							
							
 
							
						 
						
							15 years ago