Составители:
Рубрика:
• инструкции условного перехода;
• инструкция множественного выбора switch;
• инструкция вызова метода call;
• инструкция возврата из метода ret.
3.2.3.1. Безусловный переход
Существуют две инструкции безусловного перехода (см. таблицу
3.18), которые различаются только разрядностью встроенного операнда
(int8 и int32). При этом встроенный операнд этих инструкций обознача-
ет относительное смещение цели перехода.
Таблица 3.18. Инструкции безусловного перехода
3.2.3.2. Условный переход
Базовые инструкции условного перехода, приведенные в таблице
3.19, потребляют со стека вычислений один операнд и, в зависимости от
его значения, осуществляют или не осуществляют переход по указанному
во встроенном операнде относительному адресу. Диаграмма стека для этих
инструкций выглядит следующим образом:
... , value -> ...
Как и в случае инструкций безусловного перехода, существуют ко-
роткий и длинный варианты инструкций условного перехода, которые от-
личаются только разрядностью встроенного операнда (int8 и int32).
Таблица 3.19. Базовые инструкции условного перехода
Common Intermediate Language
101
3.2.3. Инструкции для организации передачи управления
Инструкции для организации передачи управления можно разделить
на пять категорий:
• инструкции безусловного перехода;
100
CIL и системное программирование в Microsoft .NET
Код Инструкция Встроенный Описание
операнд
0xB3 conv.ovf.i1 – Преобразование к int8
0xB4 conv.ovf.u1 – Преобразование к unsigned int8
0xB5 conv.ovf.i2 – Преобразование к int16
0xB6 conv.ovf.u2 – Преобразование к unsigned int16
0xB7 conv.ovf.i4 – Преобразование к int32
0xB8 conv.ovf.u4 – Преобразование к unsigned int32
0xB9 conv.ovf.i8 – Преобразование к int64
0xBA conv.ovf.u8 – Преобразование к unsigned int64
0xD4 conv.ovf.i – Преобразование к native int
0xD5 conv.ovf.u – Преобразование к unsigned
native int
Таблица 3.16. Преобразование значений со знаком с контролем
переполнения
Код Инструкция Встроенный Описание
операнд
0x82 conv.ovf.i1.un – Преобразование к int8
0x83 conv.ovf.i2.un – Преобразование к int16
0x84 conv.ovf.i4.un – Преобразование к int32
0x85 conv.ovf.i8.un – Преобразование к int64
0x86 conv.ovf.u1.un – Преобразование к unsigned int8
0x87 conv.ovf.u2.un – Преобразование к unsigned int16
0x88 conv.ovf.u4.un – Преобразование к unsigned int32
0x89 conv.ovf.u8.un – Преобразование к unsigned int64
0x8A conv.ovf.i.un – Преобразование к native int
0x8B conv.ovf.u.un – Преобразование к unsigned
native int
Таблица 3.17. Преобразование беззнаковых значений с контролем пе-
реполнения
Код Инструкция Встроенный Описание
операнд
0x2B br.s int8 Короткий безусловный переход
0x38 br int32 Длинный безусловный переход
Код Инструкция Встроенный Описание
операнд
0x2C brfalse.s int8 Короткий условный переход, ес-
ли значение равно 0 или null
0x2D brtrue.s int8 Короткий условный переход, ес-
ли значение не равно 0 или null
0x39 brfalse int32 Длинный условный переход, ес-
ли значение равно 0 или null
0x3A brtrue int32 Длинный условный переход, ес-
ли значение не равно 0 или null
100 CIL и системное программирование в Microsoft .NET Common Intermediate Language 101
Таблица 3.16. Преобразование значений со знаком с контролем • инструкции условного перехода;
переполнения • инструкция множественного выбора switch;
• инструкция вызова метода call;
Код Инструкция Встроенный Описание • инструкция возврата из метода ret.
операнд
0xB3 conv.ovf.i1 – Преобразование к int8 3.2.3.1. Безусловный переход
0xB4 conv.ovf.u1 – Преобразование к unsigned int8 Существуют две инструкции безусловного перехода (см. таблицу
3.18), которые различаются только разрядностью встроенного операнда
0xB5 conv.ovf.i2 – Преобразование к int16
(int8 и int32). При этом встроенный операнд этих инструкций обознача-
0xB6 conv.ovf.u2 – Преобразование к unsigned int16 ет относительное смещение цели перехода.
0xB7 conv.ovf.i4 – Преобразование к int32
0xB8 conv.ovf.u4 – Преобразование к unsigned int32 Таблица 3.18. Инструкции безусловного перехода
0xB9 conv.ovf.i8 – Преобразование к int64 Код Инструкция Встроенный Описание
0xBA conv.ovf.u8 – Преобразование к unsigned int64 операнд
0xD4 conv.ovf.i – Преобразование к native int 0x2B br.s int8 Короткий безусловный переход
0xD5 conv.ovf.u – Преобразование к unsigned 0x38 br int32 Длинный безусловный переход
native int
3.2.3.2. Условный переход
Таблица 3.17. Преобразование беззнаковых значений с контролем пе- Базовые инструкции условного перехода, приведенные в таблице
реполнения 3.19, потребляют со стека вычислений один операнд и, в зависимости от
его значения, осуществляют или не осуществляют переход по указанному
Код Инструкция Встроенный Описание во встроенном операнде относительному адресу. Диаграмма стека для этих
операнд инструкций выглядит следующим образом:
0x82 conv.ovf.i1.un – Преобразование к int8 ... , value -> ...
0x83 conv.ovf.i2.un – Преобразование к int16 Как и в случае инструкций безусловного перехода, существуют ко-
0x84 conv.ovf.i4.un – Преобразование к int32 роткий и длинный варианты инструкций условного перехода, которые от-
личаются только разрядностью встроенного операнда (int8 и int32).
0x85 conv.ovf.i8.un – Преобразование к int64
0x86 conv.ovf.u1.un – Преобразование к unsigned int8 Таблица 3.19. Базовые инструкции условного перехода
0x87 conv.ovf.u2.un – Преобразование к unsigned int16
Код Инструкция Встроенный Описание
0x88 conv.ovf.u4.un – Преобразование к unsigned int32
операнд
0x89 conv.ovf.u8.un – Преобразование к unsigned int64
0x2C brfalse.s int8 Короткий условный переход, ес-
0x8A conv.ovf.i.un – Преобразование к native int
ли значение равно 0 или null
0x8B conv.ovf.u.un – Преобразование к unsigned
0x2D brtrue.s int8 Короткий условный переход, ес-
native int
ли значение не равно 0 или null
0x39 brfalse int32 Длинный условный переход, ес-
3.2.3. Инструкции для организации передачи управления
ли значение равно 0 или null
Инструкции для организации передачи управления можно разделить
на пять категорий: 0x3A brtrue int32 Длинный условный переход, ес-
• инструкции безусловного перехода; ли значение не равно 0 или null
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »
