Common Intermediate Language и системное программирование в Microsoft.Net. Макаров А.В - 63 стр.

UptoLike

Таблица 3.36.Инструкция sizeof
Диаграмма стека для инструкций sizeof:
... -> ... , size
3.3.3.3. Копирование значений
Инструкции, приведенные в таблице 3.37, выполняют копирование
значений типов-значений. Во встроенных операндах этих инструкций со-
держится токен метаданных, указывающий на информацию о типе-значе-
нии в таблицах метаданных.
Инструкция ldobj используется главным образом при вызове мето-
дов для загрузки параметров (если вызываемый метод имеет параметры
типов-значений). Инструкции cpobj и stobj применяются сравнительно
редко, хотя и имеют однобайтовые коды.
Таблица 3.37. Инструкции для копирования значений
Common Intermediate Language
113
112
CIL и системное программирование в Microsoft .NET
Код Инструкция Встроенный Описание
операнд
0x9C stelem.i1 Сохраняет значение типа int8 в
элементе массива с указанным
индексом
0x9D stelem.i2 Сохраняет значение типа int16 в
элементе массива с указанным
индексом
0x9E stelem.i4 Сохраняет значение типа int32 в
элементе массива с указанным
индексом
0x9F stelem.i8 Сохраняет значение типа int64 в
элементе массива с указанным
индексом
0xA0 stelem.r4 Сохраняет значение типа float32
в элементе массива с указанным
индексом
0xA1 stelem.r8 Сохраняет значение типа float64
в элементе массива с указанным
индексом
0xA2 stelem.ref Сохраняет значение объектной
ссылки в элементе массива с
указанным индексом
0x9B stelem.i Сохраняет значение типа native
int в элементе массива с указан-
ным индексом
Таблица 3.34. Инструкции для сохранения значений в элементы
массивов
Код Инструкция Встроенный Описание
операнд
0xFE 0x15 initobj token Заполняет все поля значения
нулями
Таблица 3.35. Инструкция initobj
Код Инструкция Встроенный Описание
операнд
0xFE 0x1C sizeof token Загружает на стек размер значе-
ния указанного типа
Код Инструкция Встроенный Описание
операнд
0x70 cpobj token Копирует значение. Диаграмма сте-
ка:
... , destAddr, srcAddr -> ...
(Здесь destAddr – адрес приемника, а
srcAddr – адрес источника.)
0x71 ldobj token Загружает значение на стек вычисле-
ний. Диаграмма стека:
... , addr -> ... , valObj
(Здесь addr – адрес загружаемого
значения.)
0x81 stobj token Сохраняет значение со стека вычис-
лений в память. Диаграмма стека:
... , addr, valObj -> ... (Здесь addr
– адрес, по которому будет сохране-
но значение.)
112                          CIL и системное программирование в Microsoft .NET   Common Intermediate Language                                      113


      Таблица 3.34. Инструкции для сохранения значений в элементы                      Таблица 3.36.Инструкция sizeof
      массивов
                                                                                 Код           Инструкция Встроенный Описание
Код         Инструкция      Встроенный Описание                                                           операнд
                            операнд                                              0xFE 0x1C     sizeof     token      Загружает на стек размер значе-
0x9C        stelem.i1       –          Сохраняет значение типа int8 в                                                ния указанного типа
                                       элементе массива с указанным
                                       индексом                                        Диаграмма стека для инструкций sizeof:
0x9D        stelem.i2       –          Сохраняет значение типа int16 в                 ...-> ... , size
                                       элементе массива с указанным
                                                                                 3.3.3.3. Копирование значений
                                       индексом
                                                                                      Инструкции, приведенные в таблице 3.37, выполняют копирование
0x9E        stelem.i4       –          Сохраняет значение типа int32 в           значений типов-значений. Во встроенных операндах этих инструкций со-
                                       элементе массива с указанным              держится токен метаданных, указывающий на информацию о типе-значе-
                                       индексом                                  нии в таблицах метаданных.
0x9F        stelem.i8       –          Сохраняет значение типа int64 в                Инструкция ldobj используется главным образом при вызове мето-
                                       элементе массива с указанным              дов для загрузки параметров (если вызываемый метод имеет параметры
                                                                                 типов-значений). Инструкции cpobj и stobj применяются сравнительно
                                       индексом
                                                                                 редко, хотя и имеют однобайтовые коды.
0xA0        stelem.r4       –          Сохраняет значение типа float32
                                       в элементе массива с указанным                  Таблица 3.37. Инструкции для копирования значений
                                       индексом
                                                                                 Код      Инструкция Встроенный Описание
0xA1        stelem.r8       –          Сохраняет значение типа float64
                                                                                                     операнд
                                       в элементе массива с указанным
                                                                                 0x70     cpobj      token      Копирует значение. Диаграмма сте-
                                       индексом
                                                                                                                ка:
0xA2        stelem.ref      –          Сохраняет значение объектной
                                                                                                                ... , destAddr, srcAddr -> ...
                                       ссылки в элементе массива с
                                                                                                                (Здесь destAddr – адрес приемника, а
                                       указанным индексом
                                                                                                                srcAddr – адрес источника.)
0x9B        stelem.i        –          Сохраняет значение типа native
                                                                                 0x71     ldobj      token      Загружает значение на стек вычисле-
                                       int в элементе массива с указан-
                                                                                                                ний. Диаграмма стека:
                                       ным индексом
                                                                                                                ... , addr -> ... , valObj
                                                                                                                (Здесь addr – адрес загружаемого
                                                                                                                значения.)
      Таблица 3.35. Инструкция initobj
                                                                                 0x81     stobj      token      Сохраняет значение со стека вычис-
Код           Инструкция Встроенный Описание                                                                    лений в память. Диаграмма стека:
                         операнд                                                                                ... , addr, valObj -> ... (Здесь addr
0xFE 0x15     initobj    token      Заполняет все поля значения                                                 – адрес, по которому будет сохране-
                                    нулями                                                                      но значение.)