2012-02-12 199 views
4

有什么办法从C#代码生成汇编代码?我知道使用GAS的C代码是可能的,但是有人知道C#可能吗?从C#代码生成汇编代码?

+0

我不清楚你在问什么。你想编译你的C#程序集,或者你想编写一个C#程序来输出程序集吗? – perelman 2012-02-12 07:44:21

+0

我想查看我的C#代码在程序集中的外观。为了教育目的。立即参加大会班。 – dsta 2012-02-12 07:46:17

回答

2

当程序实际运行时,C#通常会编译为.NET字节码(称为CIL or MSIL),然后是JIT(“Just In Time”)编译为本机代码。 C#的编译器时间早于Mono's AOT,因此您可以通过其中一个编译C#程序,然后对其进行反汇编。其结果可能很难遵循。

更可能的是,您可能希望查看比CPU的汇编代码稍高的字节码,您可以在编译的C#程序的.exe上使用ILdasm

2

C#代码编译成MSIL(MS中间语言),它实际上不是你从C编译器获得的真正的代码。详细了解.NET Framework应用程序的运行方式。

如果您想查看生成的IL代码,请参阅this question

2

您可以使用NGEN工具以间接方式进行此操作,然后拆卸生成的二进制文件。或者,您可以使用调试器来检查从MSIL创建的JIT代码,Ollydbg 2就是这样一个调试器。