Рабочим названием платформы .NET было |
Язык CIL: инструкции для поддержки объектной модели
Инструкции для работы с типизированными ссылками
Типизированные ссылки в системе типов .NET реализованы исключительно для поддержки некоторых особенностей синтаксиса и семантики языка Visual Basic .NET. Они представляют собой гибрид управляемого указателя и типа-значения.
Для работы с типизированными ссылками предусмотрены три инструкции CIL, которые мы рассмотрим в этом разделе.
Создание типизированной ссылки
Инструкция mkrefany (см. таблицу 3.40) предназначена для создания типизированных ссылок. Она упаковывает вместе управляемый указатель на некоторое значение и токен метаданных, описывающий тип этого значения. При этом токен содержится во встроенном операнде инструкции.
Код | Инструкция | Встроенный операнд | Описание |
---|---|---|---|
0xC6 | mkrefany | token | Создает типизированную ссылку на вершине стека вычислений |
Диаграмма стека для инструкций mkrefany:
... , ptr -> ... , typedRef
Загрузка типа типизированной ссылки
Инструкция refanytype (см. таблицу 3.41) загружает токен метаданных, хранящийся в типизированной ссылке, на вершину стека вычислений.
Код | Инструкция | Встроенный операнд | Описание |
---|---|---|---|
0xFE 0x1D | refanytype | - | Загружает токен, хранящийся в типизированной ссылке |
Диаграмма стека для инструкций refanytype:
... , typedRef -> ... , type
Загрузка значения типизированной ссылки
Инструкция refanyval (см. таблицу 3.42) загружает управляемый указатель, хранящийся в типизированной ссылке, на вершину стека вычислений.
Код | Инструкция | Встроенный операнд | Описание |
---|---|---|---|
0xC2 | refanyval | token | Загружает адрес, хранящийся в типизированной ссылке |
Диаграмма стека для инструкций refanyval:
... , typedRef -> ... , ptr