visual valid net name generate example comment code c# assembly code-generation gas

valid - summary c# documentation



¿Generando código de ensamblado a partir del código C#? (3)

¿Hay alguna forma de generar código de ensamblado a partir del código C #? Sé que es posible con el código C con GAS, pero ¿alguien sabe si es posible con C #?


C # normalmente se compila en el bytecode de .NET (llamado CIL o MSIL ) y luego JIT ("Just In Time") compilado en código nativo cuando el programa se ejecuta realmente. Existen compiladores de C # como Mono AOT , por lo que podría compilar un programa C # a través de uno de ellos y luego desmontarlo. El resultado es probable que sea muy difícil de seguir.

Lo más probable es que desee ver los códigos de bytes que son un poco más altos que el código de ensamblaje de una CPU, lo cual puede hacer utilizando ILdasm en un .exe compilado de un programa C #.


El código de C # se compila en MSIL (MS Intermediate Language), que en realidad no es realmente código-asm que obtienes del compilador de C. Obtenga más información sobre cómo se ejecutan las aplicaciones .NET Framework.

Si desea ver el código IL generado, vea esta pregunta .


Puedes hacer esto de una manera indirecta utilizando la herramienta NGEN y luego desmontar el binario que se produce. Alternativamente, puede utilizar un depurador para inspeccionar el código JIT creado a partir de MSIL, Ollydbg 2 es uno de esos depuradores capaz de hacer esto.