Вопросы по теме 'il'
Вопрос MSIL (базовый)
Хорошо, скажем, у нас есть этот код С#:
public override void Write(XDRDestination destination)
{
destination.WriteInt(intValue);
destination.WriteBool(boolValue);
destination.WriteFixedString(str1, 100);...
1091 просмотров
schedule
25.12.2022
Что вы порекомендуете для хорошей книги по .NET CLR и CIL?
Знаете ли вы какую-нибудь хорошую книгу о работе CLR, .NET Framework и CIL в отличие от любого конкретного языка .NET?
3352 просмотров
schedule
05.07.2022
Генерация IL для двойных массивов
Я пишу некоторые институты IL для создания массивов int и double с использованием пространства имен System.Reflection.Emit.
Для создания массива int я использую следующий код.
LocalBuilder arr = gen.DeclareLocal(typeof(int));...
2316 просмотров
schedule
30.05.2023
ILDASM в папке x64
Я использую ildasm.exe (для просмотра сборок .NET) из местоположения:
C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin
Но в подпапке есть еще один файл ildasm.exe:
C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \...
483 просмотров
schedule
13.03.2023
C# Reflection IL — понимание того, как значения копируются
Я пытаюсь улучшить производительность определенной части моей программы, которая включает в себя глубокое клонирование одного и того же графа объектов снова и снова в нескольких потоках. В настоящее время я использую сериализацию, которая является...
2244 просмотров
schedule
06.05.2023
Почему MSFT C# компилирует фиксированный массив, чтобы по-разному указывать затухание и адрес первого элемента?
Компилятор .NET c# (.NET 4.0) компилирует оператор fixed довольно своеобразным способом.
Вот короткая, но полная программа, чтобы показать вам, о чем я говорю.
using System;
public static class FixedExample {
public static void Main() {...
749 просмотров
schedule
05.05.2022
Испускание вызова функции делегата
У меня есть следующий код С#:
public static double f2(Func<double, double> f, double x)
{
return f(x);
}
А вот и IL-код:
.method public hidebysig static
float64 f2 (
class [mscorlib]System.Func`2<float64,...
2844 просмотров
schedule
05.11.2022
Указанный приведение недействительно только в сборке выпуска из сборки MS.
Я получаю сообщение «Указанное приведение недействительно» при выполнении только сборки выпуска из MSBuild 4.0. Я проверил это, используя сборку выпуска Visual Studio 2012, и не получил этой проблемы. Я также проверил это с помощью отладочной сборки...
1684 просмотров
schedule
05.04.2022
Связана ли производительность IL с размером кода?
При взгляде на промежуточный язык каждая инструкция имеет определенный размер байта.
Если у меня есть метод с общим размером кода (сумма размеров инструкций) 10 байт и метод с общим размером кода 20 байт, могу ли я предположить, что первый...
102 просмотров
schedule
03.07.2023
Как понять, что имя класса добавляет символ ‹›?
Как понять этот код на C#?
using System;
internal class <Module>
{
}
Имя класса не может содержать символ <> , но разрешено ли его наличие в коде? Как бы вы этого добились? И как понять эту разницу?
Взгляните на этот код:...
955 просмотров
schedule
18.04.2023
Должен ли я пытаться использовать константную строку вместо строки, где это возможно?
Рассмотрим эти три примера:
Пример А
string message = "Hello world!";
throw new System.Exception(message);
Пример Б
const string message = "Hello world!";
throw new System.Exception(message);
Пример С
throw new...
127 просмотров
schedule
05.04.2022
CA2202: не удалять объекты несколько раз
У меня такой класс...
public class Class1
{
public Class1()
{
byte[] plainText = new byte[1024];
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new...
1868 просмотров
schedule
05.10.2023
Метод создания LCG для установки подмножества всех свойств в классе (замена отражения; С#)
Сценарий: у меня есть этот класс
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
Пользователь может выбрать только, например, FirstName и Age ....
32 просмотров
schedule
14.06.2023
Как использовать ilasm с релиз-режимом
Я хотел бы использовать ilasm для компиляции кода il. Есть довольно много параметров, которые я могу использовать. В Visual Studio я могу просто поставить галочку «Оптимизировать код» в настройках проекта. Как я могу включить компилятор ilasm для...
188 просмотров
schedule
11.07.2023
Присвоение значения строке из базового типа через конструктор с использованием TypeBuilder
Я пытаюсь программно определить класс с базовым классом и конструктором, который вызывает базовый конструктор. Частью работы конструктора подкласса является инициализация строки с именем name со значением. Но что бы я ни пробовал, имя остается...
89 просмотров
schedule
10.03.2022
Как определить тип массива?
У меня есть исключение OutOfMemoryException, и я хотел бы проанализировать размер и тип создаваемого массива.
Я создал демонстрационный дамп для этой ситуации и могу получить следующую информацию:
0:000> !pe
Exception object: 023f389c...
471 просмотров
schedule
09.11.2022
Почему ILGenerator вставляет инструкцию Leave в оператор Foreach
Я генерирую следующий код:
public override void Map(IEnumerable enumerable1)
{
List<int> list = new List<int>();
foreach (object obj2 in enumerable1)
{
}
}
через Emit
Вот полный код:
MethodBuilder...
713 просмотров
schedule
02.05.2022
Почему x86 JIT умнее, чем x64?
Я запускаю очень простую программу
static void Main(string[] args)
{
Console.WriteLine(Get4S());
Console.WriteLine(Get4());
}
private static int Get4S()
{
return 4;
}
private static int Get4()...
748 просмотров
schedule
03.07.2022
Создать копию метода из IL
Я пытаюсь создать копию метода во время выполнения, используя отражение.
У меня есть следующий код.
public static R CopyMethod<T, R>(Func<T, R> f, T t)
{
AppDomain currentDom = Thread.GetDomain();
AssemblyName asm = new...
1911 просмотров
schedule
13.09.2022