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

Why is the Disassembly Window of VS 2012 C# Showing x64 Assembly Rather Than IL?

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        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


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


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

如果您想查看c方法的原始IL,那么可以查看类似ildasm或reflector的工具。