为什么VS 2012 C#的反汇编窗口显示x64汇编而不是IL?

时间:2014-01-08 14:11:03

标签: c# visual-studio-2012 disassembly

当我将Visual Studio 2012的反汇编窗口用于C#项目时,我希望看到IL代码。但它显示了x64汇编。这是由抖动引起的吗?下面的组件是拆卸的汇编代码的一部分。

        public static void Main() {
00000000  sub         rsp,1C8h 
00000007  xor         eax,eax 
00000009  mov         qword ptr [rsp+60h],rax 
0000000e  mov         qword ptr [rsp+58h],rax 
00000013  mov         qword ptr [rsp+50h],rax 
00000018  mov         qword ptr [rsp+38h],rax 
0000001d  mov         qword ptr [rsp+30h],rax 
00000022  mov         qword ptr [rsp+28h],rax 
00000027  mov         qword ptr [rsp+20h],rax 
0000002c  xor         eax,eax 
0000002e  mov         dword ptr [rsp+4Ch],eax 
00000032  mov         dword ptr [rsp+48h],eax 
00000036  mov         dword ptr [rsp+44h],eax 
0000003a  mov         dword ptr [rsp+40h],eax 
0000003e  mov         rax,7F8786239C0h 
00000048  mov         eax,dword ptr [rax] 
0000004a  test        eax,eax 
0000004c  je          0000000000000053 
0000004e  call        000000005FA4647C 

2 个答案:

答案 0 :(得分:1)

当前的C#.NET调试器始终显示方法的本机代码(至少对于x86和x64)。这是JIT从IL生成的代码。如果您想查看方法的IL,我建议您查看ILSpy

答案 1 :(得分:0)

detambly窗口查看直接在处理器上运行的代码。因此它将显示汇编程序而不是IL。

如果你想看到C#方法的原始IL,那么看一下像ildasm或者反射器这样的工具