Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Анализ CIL-кода
Анализ CIL-кода
Напомним, что компоновочный блок не содержит специфических для платформы инструкций, а содержит независимый от платформы CIL-код. Когда среда выполнения .NET загружает компоновочный блок в память, этот CIL-код компилируется (с помощью JIT-компилятора) в инструкции, понятные для данной платформы. Если выполнить двойной щелчок на строке метода TurboBoost() класса SportsCar, с помощью ildasm.exe откроется новое окно, в котором будут показаны CIL-инструкции.
.method public hidebysig virtual instance void TurboBoost() cil managed {
// Code size 17 (0x11)
.maxstack 2
IL_0000: ldstr "Ramming speed!"
IL_0005: ldstr "Faster is better…"
IL_000a: call valuetype [System.Windows.Forms] System.Windows.Forms.DialogResult [System.Windows.Forms] System.Windows.Forms.MessageBox::Show(string, string)
IL_000f: pop
IL_0010: ret
} // end of method SportsCar::TurboBoost
Обратите внимание на то, что для идентификации метода, определенного типом SportsCar, используется лексема .method. Члены-переменные, определенные типом, обозначаются лексемой .field. Напомним, что класс Car определяет набор защищенных данных, например, таких как currSpeed.
.field family int 16 currSpeed
Свойства обозначены лексемой.property. Этот CIL-код описывает открытое свойство CurrSpeed (заметьте, что характеристики read/write свойства обозначаются лексемами .get и .set).
.property instance int16 CurrSpeed() {
.get instance int16 CarLibrary.Car::get_CurrSpeed()
.set instance void CarLibrary.Car::set_CurrSpeed(int16)
} // end of property Car::CurrSpeed
- Роль CIL
- 19.2. Лучшие практические приемы при взаимодействии с разработчиками открытого исходного кода
- Анализ манифеста
- 13.2. Встраивание JavaScript-кода в разметку HTML
- 15.3. Генераторы специализированного кода
- Анализ файла ufo.netmodule
- ГЛАВА 15. CIL и роль динамических компоновочных блоков
- Директивы, атрибуты и коды операций CIL
- Глава 5 Агрессивные формы кода и борьба с ними
- 2.5. Разработка технического задания на проведение детального анализа рынка при работе над инновационным проектом. Основ...
- 9.1. Проблема синтаксического анализа
- 2.12.2. Анализ усилительных каскадов в области малых времен