当我将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
答案 0 :(得分:1)
当前的C#.NET调试器始终显示方法的本机代码(至少对于x86和x64)。这是JIT从IL生成的代码。如果您想查看方法的IL,我建议您查看ILSpy。
答案 1 :(得分:0)
detambly窗口查看直接在处理器上运行的代码。因此它将显示汇编程序而不是IL。
如果你想看到C#方法的原始IL,那么看一下像ildasm或者反射器这样的工具