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的工具。