cil

¿Cuál es el propósito de una pila? ¿Por qué lo necesitamos?

Así que estoy aprendiendo MSIL en este momento para aprender a depurar mis aplicaciones C#. NET. Siempre me he preguntado: ... o? Para la eficiencia? Estoy tratando de comprender esto para ayudarme a entender los códigos CIL mucho más profundamente.

¿Por qué el compilador de C# traduce esto?= comparación como si fuera una> comparación?

He descubierto por pura casualidad que el compilador de C# convierte este método: static bool IsNotNull(object obj) { re ... j) { return obj > null; // (note: this is not a valid C# expression) } ¿Cómo es que el != se traduce como ">"?

¡Por qué lo es!0 un tipo en el lenguaje Intermedio de Microsoft (MSIL)?

En muchos listados de MSIL, he observado lo siguiente: System.Nullable`1<!0> etc ... O class !0 etc ... ¿Cuál es el significado de !0 en estas circunstancias?

¿Qué hace befefieldinit flag?

¿Qué hace beforefieldinit flag? Cuando miro en el IL de mi clase veo esta bandera pero no se lo que esta bandera está haciendo realmente?

Aumento raro del rendimiento en el benchmark simple

Ayer encontré un artículo de Christoph Nahr titulado". NET Struct Performance" que comparó varios lenguajes (C++, C#, Java, J ... a.Y, sw.ElapsedMilliseconds); } GC.KeepAlive(magical_speed_booster_1); GC.KeepAlive(magical_speed_booster_2); }

¿Cuál es el propósito de hidebysig en un método MSIL?

Usando ildasm y un programa C# por ejemplo static void Main(string[] args) { } Da: .method private hidebysig static voi ... (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method Program::Main ¿Qué hace la construcción hidebysig?

¿Por qué es necesario llamar a:this() en una estructura para usar propiedades automáticas en c#?

Si defino una estructura en C# usando propiedades automáticas como esta: public struct Address { public Address(string ... e los campos que el desarrollador no puede ver. Cualquier y todos los magos IL son bienvenidos a probar o refutar mi teoría.

Reemplazar dinámicamente el contenido de un método de C#?

Lo que quiero hacer es cambiar cómo se ejecuta un método C# cuando se llama, para que pueda escribir algo como esto: [Distr ... na manera de copiar a través de la IL, así como actualizar todas las llamadas a Solve() de modo que apunten a la nueva copia.

Generar código operativo de llamada de cola

Por curiosidad estaba tratando de generar un código operativo de llamada de cola usando C#. Fibinacci es fácil, así que mi e ... ail call en ningún lugar, pero solo tengo curiosidad ¿dónde se establece exactamente ese opcode? ¿Cómo está haciendo esto C#?

El compilador de C# no optimiza los moldes innecesarios

Hace unos días, mientras escribía una respuesta para esta pregunta aquí en overflow me sorprendió un poco el compilador de C# ... inteligente' aquí. Las cosas nunca son tan simples como parece, así que ¿por qué el compilador de C# es un poco ingenuo aquí?

Código incorrecto generado por el compilador para métodos anónimos [ERROR MS CORREGIDO]

Véase el siguiente código: public abstract class Base { public virtual void Foo<T>() where T : class { ... d(); //fine EDIT Estoy usando VS2012 RTMRel en windows8 RTM,. net framework 4.5 EDIT Este error ahora está solucionado.

Escribir un Compilador for.net -IL o Bytecode?

Actualmente estoy sumergiéndome en el funcionamiento interno de.net, lo que significa IL. Como ejercicio, quiero construir un ... compilan su lenguaje en IL y ejecutan ilasm? ¿Hay una versión administrada que pueda llamar / incrustar desde mi compilador?

Crear método dinámicamente y ejecutarlo

Antecedentes: Quiero definir algunos métodos static en C# , y generar código IL como matriz de bytes, a partir de uno de est ... ipo.MyMethod(Int32 valor1, Int32 valor2) [...] Por favor, ayúdame a averiguar la causa del error, y cómo solucionarlo.

¿Cómo puedo evitar que mi código sea robado?

¿Qué sucede exactamente cuando lanzo un. NET exe? Sé que C# está compilado en código IL y creo que el archivo exe generado e ... s suficiente renombrar todos los símbolos a un nombre sin sentido. Y la ingeniería inversa no será tan fácil después de todo.

¿Por qué el compilador agrega un parámetro adicional para los delegados cuando no hay cierre?

Estaba jugando con delegates y noté que cuando creo un Func<int,int,int> como el siguiente ejemplo: Func<int, int, ... Program::'CS$<>9__CachedAnonymousMethodDelegate1' IL_001c: stloc.0 IL_001d: ret } // end of method Program::Main

A.net desensamblador / decompilador [cerrado]

Estoy buscando un desensamblador o mejor, un descompilador para .net. La situación es que el código fuente de un ensamblado e ... ientas para esto por ahí? (Si no, I supongamos que va a ser una buena excusa para que me siente y empezar a aprender MSIL)