Abstract IL
The .NET Common IL is the binary format for .NET
Common Language Runtime executables. There are many, many
interesting applications for manipulating, analyzing and transforming .NET
Framework executables, ranging from static analysis for error detection to
transforming binaries to add dynamic security checks to building IL-IL
optimization and profiling tools.
The Abstract IL toolkit provided here lets you get access to the
contents of .NET Common IL binaries in an extremely convenient for many
applications: it transforms the binaries into structured abstract syntax trees
that can be manipulated using the convenient features of the C# or F#
programming languages.
The Abstract IL SDK is really three toolkits in one:
-
Abstract IL: An set of .NET Managed
libraries for performing analysis
and manipulations on .NET Common IL binaries.
-
ILX: An implementation of ILX, which is the .NET Common IL
extended with functional language constructs. The implementation is currently in the
form of an extended assembler called ILX2IL.
The tools currently allow you to work with three
different representations of .NET Common IL:
 |
foo.il:
This is the .IL (or .ILX) assembly language formats, as accepted and generated
by ILASM and ILDASM in the IL SDK. This format is good for getting going
on samples and for codegen for prototype compilers. The toolset can also
produce this format.
|
 |
foo.dll
or foo.exe: The .NET Common IL binary format.
The current release includes proper writers
and readers for the IL binary formats.
|
 |
foo.ilo: This
format is internal to the toolset and is a binary dump of the internal data
structures associated with a module, e.g. foo.il or foo.dll or foo.exe.
You can produce these formats by calling the utility program IL2ILO.EXE on the
module (there are some special rules if you are doing this for multi-module
assemblies). In general it is now preferable to use the binary readers
and writers directly.
|
You can now work with binary formats without having an RTM build of the .NET Framework SDK installed.
Don Syme
(email,
public website, internal project websites)