Промежуточный Язык и jit компилятор
MSIL – это процессоронезависимый
промежуточный язык, созданный Microsoft.
MSIL - язык более высокого уровня, чем
большинство машинных языков. Он понимает
типы объектов и имеет инструкции для
создания и инициализации объектов,
вызова виртуальных методы и непосредственной
манипуляции элементами массива. Он даже
имеет инструкции, которые оперируют
исключениями. Как и любой другой машинный
язык, MSIL может быть написан на ассемблере.
Microsoft предоставляет ассемблер и
дизассемблер для MSIL.
Перед тем, как выполнять управляемый
код CLR должен сначала скомпилировать
управляемые MSIL инструкции в инструкции
процессора. Здесь возникает типичная
проблема: когда пользователь запускает
программу, он не намерен ждать пока вся
программа скомпилируется, тем более,
что большинство функций программы не
будут вызваны. Поэтому CLR, компилирует
MSIL код в инструкции процессора, когда
функции непосредственно вызваны. Всякий
раз, когда такая функция вызывается в
будущем, сразу выполняется машинный
код (а компилятор уже не вовлекается в
процесс). Поскольку MSIL компилируется
только в нужный момент (just-in-time - JIT), этот
компонент CLR часто упоминается как JIT
компилятор (JIT compiler) или JITter.
(Перевод: исходный код-> компилятор ->
exe/dll (IL и метаданные) –> загрузчик
класса -> JIT компилятор с необязательной
проверкой -> машинные коды -> выполнение
-> проверки безопасности; runtime engine;
Библиотеки класов (IL и метаданные);
безопасный прекомпилированный код;
вызов некомпилированного метода)
