forked from icsharpcode/ILSpy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathILAst.txt
17 lines (14 loc) · 830 Bytes
/
ILAst.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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