Delphi - сбориник статей

       

Компилирование CIL в машинные инструкции



Перед выполнением кода CIL он должен быть преобразован с помощью JIT-компилятора в машинные инструкции. В процессе компиляции JIT-компилятор подсчитывает также те участки кода, которые могут никогда не вызываться. Компилятор преобразует CIL по мере надобности и вставляет заглушки на место вызова любого метода. При первом же вызове кода заглушка передается JIT-компилятору, который заменяет заглушку реальным кодом. Такого рода обращения к компилятору производятся непосредственно из реальных машинных инструкций, ранее сгенерированных компилятором, что повышает скорость исполнения программ.

В ходе компиляции CIL-кода он передается верификационному процессу. Верификация проверяет код CIL и метаданные в поисках выхода из надежного кода. Надежность типов объектов есть надежность их изолирования от других объектов и надежность защиты их от ошибочного иди злонамеренного разрушения.

Во время верификации код проверяется на доступ к разрешенной памяти и вызов только правильно определенных методов. Например, не допускается обращение к полям, которые выходят за отведенные им границы. Дополнительно верификация проверяет правильность генерации машинного кода. Процесс верификации открывает доступ к правильно определенному надежному коду. Если встретился ненадежный код, возбуждается исключение.



Содержание раздела