Компиляция в MSIL

Обновлен: Ноябрь 2007

При компиляции в управляемый код компилятор преобразует исходный код в промежуточный язык Microsoft (MSIL), представляющий собой независимый от процессора набор инструкций, который можно эффективно преобразовать в машинный код. Язык MSIL включает инструкции для загрузки, сохранения, инициализации и вызова методов для объектов, а также инструкции для арифметических и логических операций, потоков управления, прямого доступа к памяти, обработки исключений и других операций. Перед выполнением код MSIL необходимо преобразовать в код для конкретного процессора, обычно с помощью JIT-компилятора Поскольку среда CLR предоставляет для каждой поддерживаемой компьютерной архитектуры один или несколько JIT-компиляторов, один набор инструкций MSIL можно компилировать и выполнять в любой поддерживаемой архитектуре.

Когда компилятор создает код MSIL, одновременно создаются метаданные. Метаданные содержат описание типов в коде, включая определение каждого типа, подписи каждого члена типа, члены, на которые есть ссылки в коде, а также другие сведения, используемые средой выполнения во время выполнения. Код MSIL и метаданные содержатся в переносимом исполняемом (PE) файле, который представляет собой расширение форматов Microsoft PE и COFF, ранее использовавшихся для исполняемого содержимого. Этот формат файлов, позволяющий размещать код MSIL или машинный код, а также метаданные, позволяет операционной системе распознавать образы среды CLR. Наличие в файле метаданных наряду с кодом MSIL позволяет размещать описание внутри самого кода. Это устраняет необходимость в использовании библиотек типов или языка определения интерфейса (IDL). Среда выполнения находит и извлекает метаданные из файла по мере необходимости при выполнении.

См. также

Основные понятия

Процесс управляемого выполнения

Ссылки

Ассемблер MSIL (Ilasm.exe)

Другие ресурсы

Метаданные и компоненты с самоописанием