close

Общий промежуточный язык

Перейти к навигации Перейти к поиску

Common Intermediate Language (CIL, произносится как «sil» или «kil») (ранее называвшийся Microsoft Intermediate Language или MSIL) — это самый низкий уровень удобочитаемого языка программирования в Common Language Infrastructure и в .NET Framework . Языки .NET Framework компилируются в CIL. CIL — это объектно- ориентированный язык ассемблера , основанный на стеках . Он управляется виртуальной машиной . Основными языками .NET являются C# , Visual Basic .NET , C++/CLI и J# .

CIL изначально был известен как Microsoft Intermediate Language (MSIL) во время тестирования версий языков .NET. Из-за этого CIL часто называют MSIL. Этот язык можно запустить на платформах GNU/Linux благодаря проекту Mono , который реализует виртуальную машину, похожую на .NET, но с бесплатным программным обеспечением.

Общая информация

Во время компиляции языков программирования .NET исходный код преобразуется в код CIL вместо объектного кода , зависящего от платформы или процессора . CIL — это независимый от платформы набор инструкций, который может выполняться на любом процессоре.

Инструкции CIL

Промежуточный код CIL включает в себя набор инструкций для следующих групп задач:

Компиляция во время выполнения

Компиляция « точно в срок» (JIT) включает преобразование промежуточного кода в код, немедленно исполняемый ЦП . Преобразование выполняется постепенно во время выполнения программы. Компиляция JIT обеспечивает оптимизацию для конкретной среды, безопасность типов во время выполнения и проверку сборки. Для этого JIT-компилятор проверяет метаданные сборки на наличие несанкционированного доступа и соответствующим образом обрабатывает нарушения.

Генератор собственных изображений

Генератор собственных образов (NGEN) создает собственный двоичный образ для текущей среды. Байт-код либо полностью опускается, либо преобразуется в собственные инструкции ЦП перед выполнением. Это устраняет накладные расходы JIT за счет переносимости; Когда образ, сгенерированный NGEN, запускается в неподдерживаемой среде, платформа .NET автоматически использует JIT-компилятор.

NGEN предназначен для ускорения выполнения сборки за счет устранения процесса JIT-компиляции во время выполнения, но в некоторых случаях это имеет неблагоприятные последствия из-за оптимизации, выполняемой оптимизатором JIT. Из-за этого рекомендуется использовать NGEN только после измерения производительности приложения до и после его использования.

Компиляция в .NET Native в облаке

Начиная с апреля 2014 года Microsoft начала разработку облачной технологии, необходимой для компиляции всех приложений в универсальном магазине приложений с использованием .NET Native в собственный код для каждого устройства. [ 1 ] Это значительно повысит производительность универсальных приложений в Windows 10 как для телефонов, так и для ПК, что позволит им открываться и возобновлять работу на 60 % быстрее и использовать на 20 % меньше памяти, что позволит сократить время отклика системы. [ 2 ]

Это значительно повысит производительность, особенно на устройствах, где потребление памяти и процессора имеет решающее значение, таких как устройства, работающие в настоящее время под управлением Windows Phone 8.1 , которые будут обновлены до Windows 10 Mobile в конце 2015 года. [ 3 ]

Метаданные

Метаданные — это информация о скомпилированных классах. Как и библиотечные типы в объектной модели компонентов , он позволяет приложениям предоставлять и обнаруживать интерфейсы, классы, типы, методы и поля в сборке. Процесс чтения метаданных называется отражением .

Выполнение CIL

  • Исходный код преобразуется в Common Intermediate Language, и создается сборка .NET .
  • До выполнения сборки .NET ее CIL передается через JIT-компилятор общеязыковой среды выполнения для создания машинного кода. (Сборка NGEN удаляет этот шаг во время выполнения.)
  • Собственный код выполняется процессором компьютера.

Ссылки

  1. «Внутри .NET Native » (неопр.) . 9 канал. 2 апреля 2014 . Проверено 13 октября 2015 г. . 
  2. «Microsoft .NET Native» (на английском языке) . Майкрософт. 10 июля 2015 г. . Проверено 13 октября 2015 г. . 
  3. ^ «По сообщениям Lumia Spain, обновление для Windows 10 Mobile появится в ноябре» . Инсайдер Microsoft. 8 октября 2015 г. . Проверено 13 октября 2015 г. . 

Внешние ссылки