Вопросы с тегом «cil»

Common Intermediate Language - это объектно-ориентированный язык ассемблера, используемый .NET Framework, .NET Core и Mono. Языки .NET компилируются в CIL, который собирается в объектный код, имеющий формат в стиле байт-кода.

320
Какова цель стека? Зачем нам это нужно?

Поэтому я сейчас изучаю MSIL, чтобы научиться отлаживать мои приложения на C # .NET. Я всегда задавался вопросом: какова цель стека? Просто чтобы поставить мой вопрос в контексте: почему происходит перенос из памяти в стек или «загрузка»? С другой стороны, почему происходит перенос из стека в...

165
Что вы можете сделать в MSIL, что вы не можете сделать в C # или VB.NET? [закрыто]

В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...

147
Почему компилятор C # переводит это сравнение =, как если бы это было сравнение?

Я случайно обнаружил, что компилятор C # превращает этот метод: static bool IsNotNull(object obj) { return obj != null; } ... в этот CIL : .method private hidebysig static bool IsNotNull(object obj) cil managed { ldarg.0 // obj ldnull cgt.un ret } ... или, если вы предпочитаете смотреть на...

141
Виртуальная машина Java и среда CLR

Как своего рода продолжение вопроса под названием « Различия между байт-кодом MSIL и Java»? , каковы (основные) различия или сходства в том, как работает виртуальная машина Java, по сравнению с тем, как.NET Framework Common Language Runtime (CLR) работает? Кроме того, .NET Framework CLR - это...

111
Динамически заменять содержимое метода C #?

Я хочу изменить способ выполнения метода C # при его вызове, чтобы я мог написать что-то вроде этого: [Distributed] public DTask<bool> Solve(int n, DEvent<bool> callback) { for (int m = 2; m < n - 1; m += 1) if (m % n == 0) return false; return true; } Во время выполнения мне нужно...

98
Почему этот (null ||! TryParse) условный результат приводит к «использованию неназначенной локальной переменной»?

Следующий код приводит к использованию неназначенной локальной переменной numberOfGroups : int numberOfGroups; if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups)) { numberOfGroups = 10; } Однако этот код работает нормально (хотя ReSharper говорит, что =...

97
Странное увеличение производительности в простом тесте

Вчера я нашел статью Кристофа Нара под названием «.NET Struct Performance», в которой тестировался тест нескольких языков (C ++, C #, Java, JavaScript) для метода, который добавляет двухточечные структуры ( doubleкортежи). Как выяснилось, версия C ++ занимает около 1000 мс для выполнения (итерация...

92
Какова цель hidebysig в ​​методе MSIL?

Используя ildasm и программу C #, например static void Main(string[] args) { } дает: .method private hidebysig static void Main(string[] args) cil managed { .entrypoint // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method Program::Main Что делает конструкция hidebysig?...

89
Есть ли объяснение встроенным операторам в «k + = c + = k + = c;»?

Чем объясняется результат следующей операции? k += c += k += c; Я пытался понять результат вывода следующего кода: int k = 10; int c = 30; k += c += k += c; //k=80 instead of 110 //c=70 и в настоящее время я изо всех сил пытаюсь понять, почему результат для «k» равен 80. Почему присвоение k = 40...

82
Какова цель кода операции CIL nop?

Я просматриваю MSIL и замечаю, что в MSIL есть много инструкций nop . В статье MSDN говорится, что они не предпринимают никаких действий и используются для заполнения пространства, если код операции исправлен. Они гораздо чаще используются в отладочных сборках, чем в сборках выпуска. Я знаю, что...

82
Что делает флаг beforefieldinit?

Что делает флаг beforefieldinit? Когда я смотрю в IL своего класса, я вижу этот флаг, но я не знаю, что он на самом деле делает?