Поиск
 

FrameWork

MicroSoft DotNet

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

IL и верификация

IL ориентирован на работу со стеком, т. е. все его команды помещают операнды в
стек исполнения и извлекают результаты из стека. Поскольку IL не поддерживает
команды работы с регистрами, разработчики компиляторов могут расслабиться:
не нужно думать об управлении регистрами, да и команд IL меньше (ведь команд
работы с регистрами нет).
Команды IL не связаны и с типами. Так, команда IL add складывает два последних операнда, помещенных в стек; нет отдельной 32- и 64-разрядной команды
add. При выполнении команда add определяет типы операндов в стеке и делает,
что требуется.
По-моему, главное достоинство IL не в том, что он позволяет абстрагироваться от конкретного типа процессора. Главное — надежность приложений. При
компиляции IL в команды процессора CLR выполняет верификацию, в процессе
которой проверяется, все ли «безопасно» делает высокоуровневый IL-код: нет ли,
например, чтения памяти, в которую ничего не записывалось, нужное ли число
параметров передается методу и корректны ли их типы, правильно ли используются возвращаемые методами значения, имеют ли все методы операторы возврата и т. д.
Метаданные управляемого модуля включают все сведения о методах и типах,
необходимые для верификации. Если выясняется, что IL-код «небезопасен», генерируется исключение System. Security. VerificationException, и соответствующий метод
не выполняется.

Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (2 - 1 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии