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
|