我如何才能看到我的代码在程序集级别上发生了什么?

时间:2012-10-15 21:41:12

标签: c# assembly

  

可能重复:
  Retrieve JIT output
  Generating Assembly from C# code?

我开始学习汇编程序了!

我想知道是否可以查看我的c#代码的汇编代码?

例如,如果我有:

int i;

我怎么能:

  1. 查看汇编代码?
  2. 确定汇编代码中的确切内容是什么?

2 个答案:

答案 0 :(得分:2)

使用调试器查看抖动生成的机器代码。开始调试和单步或设置断点。右键单击编辑器窗口,选择“转到反汇编”。或者使用Debug + Windows + Disassembly。您将要使用的其他调试窗口是寄存器和内存,它们显示原始cpu寄存器和内存视图。右键单击“寄存器”窗口以向视图添加寄存器。

有一些关于你在那里看到的汇编代码的怪癖。所有代码都从地址0开始,它不显示实际地址,因为由于抖动而完全无法预测。但这也导致了一个错误,CALL指令的目标地址是错误的。而且您通常希望看到优化的代码,因为这是用户机器上实际运行的代码。切换到Release版本并使用Tools + Options,Debugging,General,取消选中“在模块加载时抑制JIT优化”选项。

答案 1 :(得分:1)

汇编程序代码通常只在JIT时写入,所以查看它的最佳位置,特别是如果你想了解它,就是查看VS调试器。

http://msdn.microsoft.com/en-us/library/a3cwf295.aspx

如果您的意思是IL(中间语言),这不是汇编语言,但它存储在您的EXE或DLL中。 ILSpy是一个很好的工具。

http://ilspy.net/