.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!
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

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