可能重复:从 C# 代码中
检索 JIT 输出生成程序集?
我开始学习汇编了!
我想知道是否可以看到我的代码的汇编c#
代码?
例如,如果我有:
int i;
我怎样才能:
- 看汇编代码?
- 在汇编代码中准确识别它的作用是什么?
可能重复:从 C# 代码中
检索 JIT 输出生成程序集?
我开始学习汇编了!
我想知道是否可以看到我的代码的汇编c#
代码?
例如,如果我有:
int i;
我怎样才能:
使用调试器查看抖动生成的机器代码。开始调试并单步执行或设置断点。右键单击编辑器窗口,选择 Go To Disassembly。或者使用调试 + Windows + 反汇编。您要使用的其他调试窗口是寄存器和内存,它们显示原始 cpu 寄存器和内存视图。右键单击寄存器窗口以将寄存器添加到视图中。
您在那里看到的汇编代码有一些怪癖。所有代码都从地址 0 开始,它不显示实际地址,因为由于抖动,这是完全不可预测的。但这也会导致一个错误,CALL 指令的目标地址是错误的。而且您通常希望看到优化的代码,因为那是用户机器上实际运行的代码。切换到 Release 构建并使用 Tools + Options,Debugging,General,取消选中“Suppress JIT optimization on module load”选项。
汇编代码通常只在 JIT 时编写,因此查看它的最佳位置,特别是如果您想了解它,是查看 VS 调试器。
http://msdn.microsoft.com/en-us/library/a3cwf295.aspx
如果您指的是 IL(中间语言),这不是汇编语言,而是存储在您的 EXE 或 DLL 中。一个很好的查看工具是 ILSpy。