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
|
|
|