Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Связывание параметров с локальными переменными
Связывание параметров с локальными переменными
Вы только что видели, как в CIL с помощью .local init объявляются локальные переменные, однако нужно еще выяснить, как передать отступающие параметры локальным методом. Рассмотрим следующий статический метод C#.
public static int Add(int a, int b) {
return a + b;
}
Этот внешне "невинный" метод в терминах CIL существенно более "многословен". Во-первых, поступающие аргументы (а и b) следует поместить в виртуальный стек выполнение с помощью кода операций ldarg (загрузка аргумента). Затем используется код операции add, чтобы извлечь два значения из стека, найти сумму и снова сохранить значение в стеке. Наконец, эта сумма извлекается из стена и возвращается вызывающей стороне с помощью кода операции ret. Если дизассемблировать указанный метод C# с помощью ildasm.exe, вы обнаружите, что компилятор csc.exe добавляет множество дополнительных лексем, хотя сущность CIL-кода оказывается исключительно простой.
.method public hidebysig static int32 Add(int32 a, int32 b) cil managed {
.maxstack 2
ldarg.0 // Загрузка 'a' в стек,
ldarg.1 // Загрузка 'b' стек,
add // Сложение этих значений.
ret
}
- Настройка дополнительных параметров BIOS
- Единое имя файла параметров InterBase
- Работа с переменными
- Использование параметров библиотек документов
- Настройка основных параметров BIOS
- Пропуск параметров типа
- Использование модификаторов параметров ref и out
- 3.6.3. Изменение параметров сетевого подключения
- Настройка параметров
- Настройка параметров лизинга на стороне сервера
- Настройки параметров страницы
- Настройка параметров правописания