Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Представление итерационных конструкций
Представление итерационных конструкций
Итерационные конструкции в языке программирования C# представляются с помощью ключевых слов for, foreach, while и do, каждое из которых имеет свое специальное представление в CIL. Рассмотрим классический цикл for.
public static void CountToTen() {
for (int i = 0; i ‹ 10; i++);
}
Вы можете помнить о том, что коды операций br (br, blt и т.д.) используются для управления потоком программы в зависимости от выполнения некоторого условия. В нашем примере мы задали условие, по которому должен произойти выход из цикла, когда значение локальной переменной i станет равным 10. С каждым проходом к значению i добавляется 1, после чего сразу же выполняется тестовое сравнение.
Также напомним, что при использовании любых кодов операций CIL, связанных с ветвлением, нужно определить метку для обозначения в программном коде места, куда следует перейти в случае выполнения условия. С учетом этого рассмотрите следующий (расширенный) программный код CIL, сгенерированный с помощью ildasm.exe (включая и метки программного кода).
.method public hidebysig static void CountToTen() cil managed {
.maxstack 2
.locals init ([0] int32 i) // Инициализация локальной целой 'i'.
IL_0000: ldc.i4.0 // Загрузка этого значения в стек.
IL_0001: stloc.0 // Сохранение значения под индексом '0'.
IL_0002: br.s IL_0008 // Переход к IL_0008.
IL_0004: ldloc.0 // Загрузка значения с индексом 0.
IL_0005: ldc.i4.1 // Загрузка значения '1' в стек.
IL_0006: add // Добавление в стек под индексом 0.
IL_0007: stloc.0
IL_0008: ldloc.0 // Загрузка значения с индексом '0'.
IL_0009: ldc.i4.s 10 // Загрузка значения '10' в стек.
IL_000b: blt.s IL_0004 // Меньше? Если да, то к 1L_0004.
IL_000d: ret
}
В сущности, этот программный код CIL начинается с определения локальной переменной int32 и загрузки ее в стек. Затем осуществляются переходы между командами с метками IL_0008 и IL_0004, причем каждый раз значение i увеличивается на 1 и проверяется, осталось ли это значение меньше 10. Если нет, то происходит выход из метода.
- 4.2. Формализованное представление угроз ИБ от персонала
- 5 Текстовое представление данных: ясные протоколы лежат в основе хорошей практики
- Представление дискуссионной группы по управлению проектами
- ГЛАВА 4. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ
- 4.5. Кейс по компании «Тарпин» – производителю светопрозрачных конструкций
- Представление метаданных компоновочного блока
- 9.5.1. Представление графов
- 2.3. Представление чисел в компьютере
- 4.2. Представление базовой структуры программы
- Наглядное представление неочевидных вещей
- Представление данных
- Внутреннее представление переменной jiffies