что такое microsoft intermediate language msil
Microsoft Intermediate Language
Microsoft Intermediate Language
Язык MSIL также нередко называют просто IL (англ. Intermediate Language ), то есть просто «промежуточный язык».
Синтаксис и мнемоника языка MSIL описываются спецификацией CIL (англ. Common Intermediate Language ) — открытой спецификацией общего промежуточного языка. Спецификация CIL является составной частью более общей спецификации CLI (англ. Common Language Infrastructure ).
Полезное
Смотреть что такое «Microsoft Intermediate Language» в других словарях:
Microsoft Intermediate Language — Common Intermediate Language (CIL) (teilweise auch nur Intermediate Language (IL)) ist eine Zwischensprache, in die alle Programme der Common Language Infrastructure übersetzt werden. CIL ist eine objektorientierte Assemblersprache und ist… … Deutsch Wikipedia
Intermediate language — Common Intermediate Language (CIL) (teilweise auch nur Intermediate Language (IL)) ist eine Zwischensprache, in die alle Programme der Common Language Infrastructure übersetzt werden. CIL ist eine objektorientierte Assemblersprache und ist… … Deutsch Wikipedia
Intermediate language — In computer science, an intermediate language is the language of an abstract machine designed to aid in the analysis of computer programs. The term comes from their use in compilers, where a compiler first translates the source code of a program… … Wikipedia
Common Intermediate Language — (CIL) (teilweise auch nur Intermediate Language (IL)) ist eine Zwischensprache, in die alle Programme der Common Language Infrastructure übersetzt werden. CIL ist eine objektorientierte Assemblersprache und ist vollständig stackbasiert. Auf dem… … Deutsch Wikipedia
Microsoft Visual Studio — Visual Studio 2010 SP1 editing a WPF application Developer(s) … Wikipedia
СОДЕРЖАНИЕ
Основная информация
Процесс выполнения выглядит так:
инструкции
Байт-код CIL содержит инструкции для следующих групп задач:
Вычислительная модель
В последнем примере значения двух регистров, eax и edx, сначала помещаются в стек. Когда вызывается инструкция добавления, операнды «выталкиваются» или извлекаются, а результат «помещается» или сохраняется в стеке. Полученное значение затем извлекается из стека и сохраняется в eax.
Объектно-ориентированные концепции
CIL разработан как объектно-ориентированный. Вы можете создавать объекты, вызывать методы и использовать другие типы членов, например поля.
Каждый метод должен (за некоторыми исключениями) находиться в классе. Так делает этот статический метод:
Метод Add не требует объявления какого-либо экземпляра Foo, потому что он объявлен как статический, и затем его можно использовать в C # следующим образом:
В CIL это будет выглядеть так:
Экземплярные классы
Создание объектов
В C # экземпляры классов создаются так:
И эти инструкции примерно такие же, как эти инструкции в CIL:
Вызов методов экземпляра
Методы экземпляра вызываются в C # следующим образом:
Как вызывается в CIL:
Метаданные
Метаданные могут быть данными в форме «атрибутов». Атрибуты можно настроить, расширив Attribute класс. Это мощная функция. Это дает создателю класса возможность украсить его дополнительной информацией, которую потребители класса могут использовать различными значимыми способами в зависимости от домена приложения.
Пример
Ниже представлена базовая программа Hello, World, написанная на CIL. Будет отображена строка «Hello, world!».
Следующий код более сложен по количеству кодов операций.
В синтаксисе CIL это выглядит так:
Это просто представление того, как CIL выглядит на уровне виртуальной машины (ВМ). При компиляции методы сохраняются в таблицах, а инструкции хранятся в байтах внутри сборки, которая является переносимым исполняемым файлом (PE).
Поколение
Сборка и инструкции CIL генерируются либо компилятором, либо утилитой, называемой IL Assembler ( ILAsm ), которая поставляется со средой выполнения.
Исполнение
Своевременная компиляция
Своевременная компиляция (JIT) включает в себя превращение байтового кода в код, который немедленно исполняется ЦП. Преобразование выполняется постепенно во время выполнения программы. JIT-компиляция обеспечивает оптимизацию для конкретной среды, безопасность типов во время выполнения и проверку сборки. Для этого JIT-компилятор проверяет метаданные сборки на предмет любых незаконных обращений и соответствующим образом обрабатывает нарушения.
Опережающая компиляция
Совместимые с CLI среды выполнения также имеют возможность выполнять предварительную компиляцию (AOT) сборки, чтобы ускорить ее выполнение за счет удаления процесса JIT во время выполнения.
Заметное отличие от байт-кода Java состоит в том, что CIL поставляется с ldind, stind, ldloca и множеством инструкций вызова, которых достаточно для манипулирования указателями данных / функций, необходимых для компиляции кода C / C ++ в CIL.
Соответствующий код в CIL можно представить следующим образом:
СОДЕРЖАНИЕ
Основная информация
Процесс выполнения выглядит так:
инструкции
Байт-код CIL содержит инструкции для следующих групп задач:
Вычислительная модель
В последнем примере значения двух регистров, eax и edx, сначала помещаются в стек. Когда вызывается инструкция добавления, операнды «выталкиваются» или извлекаются, а результат «помещается» или сохраняется в стеке. Полученное значение затем извлекается из стека и сохраняется в eax.
Объектно-ориентированные концепции
CIL разработан как объектно-ориентированный. Вы можете создавать объекты, вызывать методы и использовать другие типы членов, например поля.
Каждый метод должен (за некоторыми исключениями) находиться в классе. Так делает этот статический метод:
Метод Add не требует объявления какого-либо экземпляра Foo, потому что он объявлен как статический, и затем его можно использовать в C # следующим образом:
В CIL это будет выглядеть так:
Экземплярные классы
Создание объектов
В C # экземпляры классов создаются так:
И эти инструкции примерно такие же, как эти инструкции в CIL:
Вызов методов экземпляра
Методы экземпляра вызываются в C # следующим образом:
Как вызывается в CIL:
Метаданные
Метаданные могут быть данными в форме «атрибутов». Атрибуты можно настроить, расширив Attribute класс. Это мощная функция. Это дает создателю класса возможность украсить его дополнительной информацией, которую потребители класса могут использовать различными значимыми способами в зависимости от домена приложения.
Пример
Ниже представлена базовая программа Hello, World, написанная на CIL. Будет отображена строка «Hello, world!».
Следующий код более сложен по количеству кодов операций.
В синтаксисе CIL это выглядит так:
Это просто представление того, как CIL выглядит на уровне виртуальной машины (ВМ). При компиляции методы сохраняются в таблицах, а инструкции хранятся в байтах внутри сборки, которая является переносимым исполняемым файлом (PE).
Поколение
Сборка и инструкции CIL генерируются либо компилятором, либо утилитой, называемой IL Assembler ( ILAsm ), которая поставляется со средой выполнения.
Исполнение
Своевременная компиляция
Своевременная компиляция (JIT) включает в себя превращение байтового кода в код, который немедленно исполняется ЦП. Преобразование выполняется постепенно во время выполнения программы. JIT-компиляция обеспечивает оптимизацию для конкретной среды, безопасность типов во время выполнения и проверку сборки. Для этого JIT-компилятор проверяет метаданные сборки на предмет любых незаконных обращений и соответствующим образом обрабатывает нарушения.
Опережающая компиляция
Совместимые с CLI среды выполнения также имеют возможность выполнять предварительную компиляцию (AOT) сборки, чтобы ускорить ее выполнение за счет удаления процесса JIT во время выполнения.
Заметное отличие от байт-кода Java состоит в том, что CIL поставляется с ldind, stind, ldloca и множеством инструкций вызова, которых достаточно для манипулирования указателями данных / функций, необходимых для компиляции кода C / C ++ в CIL.
Соответствующий код в CIL можно представить следующим образом:
BestProg
Содержание
Поиск на других ресурсах:
.NET Framework служит средой для поддержки, разработки и выполнения распределенных приложений, которые базируются на компонентах (элементах управления).
Приложения (программы) можно разрабатывать на разных языках программирования, которые поддерживают эту технологию.
.NET Framework обеспечивает:
Библиотека базовых классов включает в себя определение разнообразных примитивов, которыми могут быть: потоки, графические API-интерфейсы, реализация баз данных, файловый ввод-вывод и прочее.
3. Какой принцип действия общеязыковой среды выполнения CLR ( Common Language Runtime )?
Основное назначение CLR – превратить промежуточный код MSIL в исполнительный код в процессе выполнения программы.
Рис. 1. Процесс преобразования исходного кода в код на языке MSIL ( CIL или IL ) и создание файла сборки ( *.dll или *.exe )
Исполнительная среда CLR отвечает за определение места размещения сборки (assembly).
Запрашиваемый тип, который размещается в сборке (например, класс ArrayList или другой тип), определяется в двоичном файле ( *.dll или *.exe ) с помощью считывания метаданных этого файла.
После этого CLR размещает в памяти считанный из сборки тип.
Затем CLR превращает CIL-код в соответствующие инструкции, которые подстраиваются под конкретную платформу (в зависимости от ПК, операционной системы и т.п.). Кроме того, на этом этапе происходят необходимые проверки на предмет безопасности.
Последним происходит выполнение запрашиваемого программного кода.
4. Что такое промежуточный язык MSIL ( Microsoft Intermediate Language ) или CIL ( Common Intermediate Language )?
MSIL есть псевдокодом. MSIL определяет набор инструкций, которые:
Фактически, MSIL – это язык переносного ассемблера
Сборка предназначена для сохранения пространств имен ( namespaces ). Пространства имен содержат типы. Типами могут быть классы, делегаты, интерфейсы, перечисления, структуры.
Сборка может содержать любое количество пространств имен. Любое пространство имен может содержать любое количество типов (классов, интерфейсов, структур, перечислений, делегатов).
6. Что размещается в сборках?
7. Что такое манифест ( manifest )?
Манифест – это описание самой сборки с помощью метаданных.
В манифесте размещается информация:
Если в исходном коде используются библиотеки базовых классов (например из сборки mscorlib.dll ), то они загружаются с помощью загрузчика классов.
После этого приложение выполняется.
9. Какие существуют виды сборок?
Существует два вида сборок:
В многофайловой сборке один из модулей есть главным ( primary ).
10. В каком файле размещается главная сборка библиотеки MS Visual Studio?
Главная сборка размещается в файле “ mscorlib.dll ”.
Типами могут быть классы, интерфейсы, структуры, перечисления, делегаты.
12. Какое назначение общеязыковой спецификации CLS?
14. Что такое пространство имен ( namespace )?
Пространство имен предназначено для объединения группы типов, которые связаны между собою с семантической точки зрения. Типы размещаются в сборках ( assembly ). Под типами понимаются классы, делегаты, интерфейсы, структуры, перечисления.
Примеры названий пространств имен:
Например, в пространстве имен System.Data размещаются основные типы для работы с базами данных, в пространстве имен System.Collections размещаются основные типы для работы с коллекциями.
Рис. 3. Вызов утилиты Object Browser
Рис. 4. Окно Object Browser с выделенной сборкой mscorlib.dll
Рис. 5. Сборка mscorlib и список пространств имен, которые входят в нее
Аналогично раскрывается любое из пространств имен. В пространствах имен описываются типы. В типах описываются методы, свойства, константы и т.п.
Рис. 6. Содержимое класса BinaryReader
Примеры подключения пространств имен:
После подключения пространства имен можно обращаться к типам, которые в них реализованы.
Программирование: теория и практика
Рубрики
Свежие записи
При использовании материалов сайта, ссылка на сайт обязательна.
Общий промежуточный язык
СОДЕРЖАНИЕ
Общая информация [ править ]
Процесс выполнения выглядит так:
Инструкции [ править ]
Байт-код CIL содержит инструкции для следующих групп задач:
Вычислительная модель [ править ]
В последнем примере значения двух регистров, eax и edx, сначала помещаются в стек. Когда вызывается инструкция добавления, операнды «выталкиваются» или извлекаются, а результат «помещается» или сохраняется в стеке. Полученное значение затем извлекается из стека и сохраняется в eax.
Объектно-ориентированные концепции [ править ]
CIL разработан как объектно-ориентированный. Вы можете создавать объекты, вызывать методы и использовать другие типы членов, например поля.
Каждый метод должен (за некоторыми исключениями) находиться в классе. Так делает этот статический метод:
Метод Add не требует объявления какого-либо экземпляра Foo, потому что он объявлен как статический, и затем его можно использовать в C # следующим образом:
В CIL это будет выглядеть так:
Классы экземпляров [ править ]
Создание объектов [ править ]
В C # экземпляры классов создаются так:
И эти инструкции примерно такие же, как эти инструкции в CIL:
Вызов методов экземпляра [ править ]
Методы экземпляра вызываются в C # как следующие:
Как вызывается в CIL:
Метаданные [ править ]
Метаданные могут быть данными в форме «атрибутов». Атрибуты можно настроить, расширив Attribute класс. Это мощная функция. Это дает создателю класса возможность украсить его дополнительной информацией, которую потребители класса могут использовать различными значимыми способами в зависимости от домена приложения.
Пример [ править ]
Ниже представлена базовая программа Hello, World, написанная на CIL. Будет отображена строка «Hello, world!».
Следующий код более сложен по количеству кодов операций.
В синтаксисе CIL это выглядит так:
Это просто представление того, как CIL выглядит на уровне виртуальной машины (ВМ). При компиляции методы сохраняются в таблицах, а инструкции хранятся в байтах внутри сборки, которая является переносимым исполняемым файлом (PE).
Поколение [ править ]
Сборка и инструкции CIL генерируются либо компилятором, либо утилитой, называемой IL Assembler ( ILAsm ), которая поставляется со средой выполнения.
Казнь [ править ]
Своевременная компиляция [ править ]
Своевременная компиляция (JIT) включает в себя превращение байтового кода в код, который немедленно исполняется ЦП. Преобразование выполняется постепенно во время выполнения программы. JIT-компиляция обеспечивает оптимизацию для конкретной среды, безопасность типов во время выполнения и проверку сборки. Для этого JIT-компилятор проверяет метаданные сборки на предмет любых незаконных обращений и соответствующим образом обрабатывает нарушения.
Опережающая компиляция [ править ]
Совместимые с CLI среды выполнения также имеют возможность выполнять предварительную компиляцию (AOT) сборки, чтобы ускорить ее выполнение за счет удаления процесса JIT во время выполнения.
Заметное отличие от байт-кода Java состоит в том, что CIL поставляется с ldind, stind, ldloca и множеством инструкций вызова, которых достаточно для манипулирования указателями данных / функций, необходимых для компиляции кода C / C ++ в CIL.
Соответствующий код в CIL можно представить следующим образом: