Описание тега intermediate-language

Промежуточный язык в конструкции компилятора - это язык низкого уровня, который обычно напоминает идеализированный язык ассемблера, часто текстовое представление байт-кода для виртуальной машины. Для.NET CIL используйте тег [cil].
4 ответа

Какие инструменты выполняют модификацию IL после компиляции?

Недавнее упоминание о PostSharp напомнило мне об этом: В прошлом году, когда я работал, мы думали об использовании PostSharp для внедрения инструментов в наш код. Это было в среде Team Foundation Server Team Build / Continuous Integration. Размышляя…
16 июл '09 в 13:02
1 ответ

Модульные тесты C# и код в той же папке: вырезать тесты из скомпилированного двоичного файла

Я прочитал ответы на вопросы. Вы ставите модульные тесты в том же или другом проекте? и тогда (почти 10 лет назад) был достигнут консенсус - поставить модульные тесты в отдельный проект от кода, который они тестируют. Основная причина заключается в …
1 ответ

ldloc var против ldloc.n

Кто-нибудь знает, если есть даже небольшая разница, используя ldloc var CIL инструкция и ldloc.n? Учитывая эту локальную таблицу переменных в области видимости метода: .locals init ([0] int32 a, [1] int32 b) Эти инструкции: ldloc.0 ldloc.1 лучше, ху…
01 апр '14 в 12:27
1 ответ

.NET IL Установщик свойств

Рассмотрим этот класс: public class Foo { // Fields private string _bar; // Properties private string Bar { get { return this._bar; } set { this._bar = value; } } } Теперь, когда я иду и смотрю в коде IL, испускаемом компилятором для установки Bar и…
15 ноя '10 в 13:21
0 ответов

Как выглядит операция сложения в промежуточном коде / трехадресном коде?

Если я напишу функцию следующим образом int sum(int i) { if(!i) return 0; return sum(i--) + i; //this line } Как компилятор представляет оператор возврата в терминах трехадресного кода / промежуточного кода? Есть ли 1) return i-- + sum(i) differ fro…
1 ответ

Однопроходное представление промежуточного компилятора?

Я читал книгу о драконах и меня интересует однопроходные компиляторы, так что поправьте меня, если я ошибаюсь, но, поскольку компилятор проходит анализ, он генерирует более и более точное промежуточное представление, или, возможно, точное словом, мо…
1 ответ

Вопросы о C как промежуточном языке

Я пишу язык, который компилируется в C прямо сейчас, и когда я говорю "IL", я имею в виду, что "C" - это язык, на котором я пишу код, чтобы затем генерировать сборку другим компилятором c, например, gcc или clang. Код C, который я генерирую, будет б…
0 ответов

Перевод с языка Intermediate на машинные инструкции с тремя адресами

Я не уверен, с чего начать. Из того, что я понимаю, "VAR(x)" соответствует правилу 2, ":= VAR(x)" относится к правилу 5, а "+ NUM (1) относится к ссылке 3. Может ли кто-нибудь указать мне правильное направление? РЕДАКТИРОВАТЬ: С дальнейшими исследо…
1 ответ

Изменение кода IL, вызывающее исключение InvalidProgramException во время выполнения

Я пытаюсь удалить подписку на событие Tick в IL Code, чтобы оно никогда не срабатывало. Вот код IL: IL_0e19: ldftn instance void App.Framework.MainForm::mTimer_Tick(object, class [mscorlib]System.EventArgs) IL_0e1f: newobj instance void [mscorlib]Sy…
11 июн '18 в 11:18
1 ответ

Почему сборки с атрибутом SecurityTransparent заставляют инструментальный код через профилировщик генерировать исключение VerificationException?

Кажется, что когда я применяю инструмент для сборки, использующей OpenCover, сборки с атрибутом SecurityTransparent (и, кажется, AllowPartiallyTrustedCallers) выдают исключение VerificationException. Я хотел бы знать, почему это так и есть ли альтер…
1 ответ

Прагматика типизированных промежуточных языков

Одной из тенденций в компиляции является использование типизированных промежуточных языков. Хаскеля ghc с этими core Промежуточный язык, вариант System F-omega, является примером этой архитектуры [ 1 ]. Другой - LLVM, в основе которого лежит типизир…
2 ответа

C# компиляция в код MSIL

Есть ли у компилятора Microsoft C# (CSC.exe) возможность вывода файлов на промежуточном языке? Что-то вроде переключателя -S в GCC?
29 окт '09 в 18:26
0 ответов

Как ILEmit функцию из другой DLL?

Я пытаюсь создать файл.exe, и этот файл должен вызывать функцию, которая размещена в другой DLL. Я могу правильно загрузить DLL, и на тип и метод ссылаются правильно, но это выдает исключение, когда я пытаюсь вызвать метод Main: Common Language Runt…
15 ноя '18 в 21:45
4 ответа

Что произойдет, если мы добавим строки в код IL и добавим точки останова в нашу программу?

Если я добавлю, скажем, 1 строку в начале метода, если я установлю точку останова через Visual Studio в первой строке, будет ли она указывать на первую строку или вторую? Если он помечает неправильную строку, можем ли мы что-то сделать при редактиро…
08 авг '09 в 00:30
1 ответ

Плюсы и минусы графического и линейного промежуточного представления в дизайне компилятора?

В проекте компилятора кратко представлены два вида промежуточного представления (IR): графическое (например, дерево абстрактного синтаксиса) и линейное (например, LLVM IR). Каковы плюсы и минусы двух? Я заметил, что Clang реализовал и то и другое, н…
2 ответа

Как оценить значение переменной с помощью статического анализа?

Я хочу написать программу для этого, основанную на встроенном анализе Reot-Definition от Soot. Теперь мне интересно, это правильный подход? Я искал и обнаружил, что никто не заинтересован в этом направлении. Какие-либо предложения?
1 ответ

Как работает обратный патч с маркерами?

Я искал по всему Интернету и не мог найти правильное объяснение того, как работает обратная рассылка? Не могли бы вы объяснить, как работает резервирование? Как это работает с маркерами? Я знаю, что у него есть 2 основных типа маркеров: со следующим…
1 ответ

Параметры для динамического вызова методов в C#

Я видел довольно много вопросов, связанных с тем, как я могу вызвать метод, такой и тот. То, что я не нашел, - это список различных опций того, как вызывать метод через отражение или любым другим способом в csharp. Может кто-нибудь подробно объяснит…
1 ответ

Что касается псевдокода, что делает MoveNext в IAsyncStateMachine в MIL?

Я пытаюсь понять конечный автомат, который создается при использовании async-await, Я беру простой кусок кода C# using System; using System.Net; using System.Threading.Tasks; public class C { public static async Task<string> GetGoogleDotComHtm…
13 дек '16 в 21:15
2 ответа

Каковы некоторые очевидные оптимизации для виртуальной машины, реализующей функциональный язык?

Я работаю над промежуточным языком и виртуальной машиной для запуска функционального языка с парой "проблемных" свойств: Лексические пространства имен (замыкания) Динамически растущий стек вызовов Медленный целочисленный тип (bignums) Промежуточный …