mirror of https://github.com/icsharpcode/ILSpy.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							17 lines
						
					
					
						
							830 B
						
					
					
				
			
		
		
	
	
							17 lines
						
					
					
						
							830 B
						
					
					
				The first step ICSharpCode.Decompiler performs to decompile a method is to | 
						|
translate the IL code into the 'ILAst'. | 
						|
 | 
						|
An ILAst node (ILInstruction in the code) usually has other nodes as arguments, | 
						|
and performs a computation with the result of those arguments. | 
						|
 | 
						|
The evaluation of a node results in either: | 
						|
 * a value | 
						|
 * void (which is invalid as an argument, but nodes in blocks may produce void results) | 
						|
 * a thrown exception (which stops further evaluation until a matching catch block) | 
						|
 * the execution of a branch instruction (which also stops evaluation until we reach the block container that contains the branch target) | 
						|
 | 
						|
The main differences between IL and ILAst are: | 
						|
 * ILAst instructions may form trees | 
						|
 * Types are explicit, not implicit | 
						|
 * There is no evaluation stack | 
						|
   * Instead, "stack slot" variables are introduced
 | 
						|
 |