cil – -Translation – Keybot Dictionary

Spacer TTN Translation Network TTN TTN Login Deutsch Français Spacer Help
Source Languages Target Languages
Keybot 4 Results  www.viva64.com
  New Year PVS-Studio 6.0...  
NET code. Roslyn exposes modules for syntactic (lexical) analysis of code, semantic analysis, dynamic compilation to CIL, and code emission. Roslyn APIs are of three types, namely feature APIs, work-space APIs and compiler APIs.
Данная платформа включает в себя самодостаточные компиляторы для C# и VB.NET. Они доступны не только в виде традиционных приложений командной строки, но и в качестве нативных API, к которым можно обращаться из .NET-кода. Roslyn открывает доступ к модулям синтаксического (лексического) анализа кода, семантического анализа, динамической компиляции в CIL-байткод и генерации сборки. Предоставляемые Roslyn API можно разделить на три типа: функциональные API (feature API), API рабочего пространства (workspace API) и API компиляторов (compiler API). Функциональные API облегчают процесс рефакторинга и отладки. API рабочего пространства позволяют разработчикам плагинов реализовывать определенные механизмы, специфичные для IDE наподобие Visual Studio - например, поиск соответствий между переменными и значениями или форматирование кода. API компиляторов обеспечивают возможности для еще более продвинутого анализа исходного кода, предоставляя информацию о прямых вызовах модулей анализа синтаксического дерева и анализа потока управления на этапе связывания идентификаторов со значениями.
  How to capture a variab...  
.method assembly hidebysig instance void 'b__0'() cil managed { . maxstack 8 // Puts the current class item (equivalent to 'this') // to the top of the stack. // It is necessary for the access to // the fields of the current class.
.method assembly hidebysig instance void 'b__0'() cil managed { .maxstack 8 // Помещает на верх стека текущий экземпляр класса (аналог 'this'). // Это необходимо для доступа к полям текущего класса. IL_0000: ldarg.0 // Помещает на верх стека значение поля 'i' // экземпляра текущего класса. IL_0001: ldfld int32 TestSolution.Program/'<>c__DisplayClass1_0'::i // Вызывает метод вывода строки в консоль. // В качестве аргументов передаются значения со стека. IL_0006: call void [mscorlib]System.Console::WriteLine(int32) // Выходит из метода. IL_000b: ret }
  How to capture a variab...  
.method private hidebysig instance void Foo() cil managed { . maxstack 3 // -========== DECLARATION OF LOCAL VARIABLES ==========- . locals init( // A list of 'actions'. [0] class [mscorlib]System. Collections. Generic. List'1 actions, // A container class for the lambda. [1] class TestSolution. Program/ '<>c__DisplayClass1_0' 'CS$<>8__locals0', // A technical variable V_2 is necessary for temporary // storing the results of the addition operation. [2] int32 V_2, // Technical variable V_3 is necessary for storing // the enumerator of the 'actions' list during // the iteration of the 'foreach' loop. [3] valuetype [mscorlib]System. Collections. Generic. List'1/Enumerator V_3) // -================= INITIALIZATION =================- // An instance of the Actions list is created and assigned to the // 'actions' variable.
.method private hidebysig instance void Foo() cil managed { .maxstack 3 // -========== ОБЪЯВЛЕНИЕ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ ==========- .locals init( // Список 'actions'. [0] class [mscorlib]System.Collections.Generic.List'1 actions, // Класс-контейнер для лямбды. [1] class TestSolution.Program/ '<>c__DisplayClass1_0' 'CS$<>8__locals0', // Техническая переменная V_2 необходимая для временного // хранения результата операции суммирования. [2] int32 V_2, // Техническая переменная V_3 необходимая для хранения // енумератора списка 'actions' во время обхода циклом 'foreach'. [3] valuetype [mscorlib]System.Collections.Generic.List'1/Enumerator V_3) // -================= ИНИЦИАЛИЗАЦИЯ =================- // Создается экземпляр списка Actions и присваивается // переменной 'actions'. IL_0000: newobj instance void class [mscorlib]System.Collections.Generic.List'1::.ctor() IL_0005: stloc.0 // Создается экземпляр класса-контейнера и // присваивается в соответствующую локальную переменную. IL_0006: newobj instance void TestSolution.Program/'<>c__DisplayClass1_0'::.ctor() IL_000b: stloc.1 // Загружается на стек ссылка экземпляра класса-контейнера. IL_000c: ldloc.1 // Число 0 загружается на стек. IL_000d: ldc.i4.0 // Присваивается со стека число 0 полю 'i' предыдущего // объекта на стеке (экземпляру класса-контейнера). IL_000e: stfld int32 TestSolution.Program/'<>c__DisplayClass1_0'::i // -================= ЦИКЛ FOR =================- // Перепрыгивает к команде IL_0037. IL_0013: br.s IL_0037 // Загружаются на стек ссылки списка 'actions' и // экземпляра класса-контейнера. IL_0015: ldloc.0 IL_0016: ldloc.1 // Загружается на стек ссылка на метод 'Foo' // экземпляра класса-контейнера. IL_0017: ldftn instance void TestSolution.Program/'<>c__DisplayClass1_0'::'b__0'() // Создается экземпляр класса 'Action' и в него передается // ссылка на метод 'Foo' экземпляра класса-контейнера. IL_001d: newobj instance void [mscorlib]System.Action::.ctor(object, native int) // Вызывается метод 'Add' у списка 'actions' добавляя // в него экземпляр класса 'Action'. IL_0022: callvirt instance void class [mscorlib]System.Collections.Generic.List'1::Add(!0) // Загружается на стек значение поля 'i' экземпляра // класса-контейнера. IL_0027: ldloc.1 IL_0028: ldfld int32 TestSolution.Program/'<>c__DisplayClass1_0'::i // Присваивается технической переменной 'V_2' значение поля