An Introduction to the Common Compiler Infrastructure

The Common Compiler Infrastructure (CCI) is a set of libraries and associated application programming interfaces (APIs) that provide a flexible and efficient way to work with the contents of .NET portable executable (PE) files, such as assemblies or modules, and debugging files (PDBs). CCI supports several important scenarios, including.
  • Static analysis tools, which analyze PE files for purposes such as:
    • Checking for poor programming practices and potential bugs. For example, FxCop is based on CCI.
    • Extracting information from the metadata. For example, SandCastle uses CCI to extract metadata from assemblies and uses the information to create an API reference help file (CHM) for the assembly.
  • Rewriting tools, which modify an assembly’s code or metadata for purposes such as:
    • Inserting tracing code.
    • Inserting performance instrumentation.
    • Inserting security-related data.
    • Optimizing compiled code beyond what is provided by the standard compilers.
  • Compiler generation tools, sometimes referred to as “compiler compilers”.
The CCI documentation focuses on static analysis and rewriting tools. CCI simplifies the process of writing such tools, in part by providing a more efficient implementation of the functionality supported by System.Reflection, System.Reflection.Emit, and System.CodeDom. However, CCI goes beyond that functionality to provide a unified framework for static analysis and rewriting of assembly metadata and code.

This document provides a general introduction to CCI, with the following topics For details on how to obtain CCI, see Getting Started.

Next: PE Basics

Last edited Jan 22, 2010 at 2:54 PM by Guy_Smith, version 6


No comments yet.