当前位置: 首页 > 知识库问答 >
问题:

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

况经纬
2023-03-14

当我为C#项目使用Visual Studio 2012的反汇编窗口时,我希望看到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个答案

苏俊友
2023-03-14

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

如果您想查看C#方法的原始IL,请查看ild

那宏大
2023-03-14

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

 类似资料:
  • #include <stdio.h> void fun1(void) { int i = 0; i++; i = i * 2; printf("%d\n", i); } void fun2(void) { int j = 0; fun1(); j++; j = j

  • 我正在使用Linux并试图学习OpenGL。我参考了learnopengl.com网站,并在这里编译了第一个可用的程序。 我似乎在编译程序时没有遇到命令问题 但是当我运行程序时,它会从后面显示东西,而不是像这样的空白窗口 但是请注意,此窗口不透明,因为如果我移动窗口,背景是相同的。但是,如果我最小化并重新打开窗口,则背景是新创建的。专用和集成 GPU 都会发生这种情况。 我需要做什么才能使它正常工

  • 我正在查看英特尔提供的指令的参考实现。页面是英特尔数字随机数生成器(DRNG)软件实现指南,代码来自英特尔数字随机数生成器软件代码示例。 以下是英特尔的相关部分。它读取一个随机值并将其置于val中,并在成功时设置进位标志。 索里不得不问。我认为GNU Extended Assembler并没有涵盖它,搜索“=qm”会产生虚假的点击。 扩展汇编器中的是什么意思?

  • 为了更好地理解编译器,特别是汇编语言,我一直在实验一段简单的代码,其中计算第一个数字的总和,这应该导致或. 如代码所示,有两个功能: 在第一个函数中,I从O循环到N,即

  • 我是Java新手,正在尝试在NetBeans中运行Java awt/javax.swing应用程序。以下是github链接。 在我按下run之后,即使Netbeans一直在其窗口中显示,并且Java application图标下出现了一个圆点,也没有真正发生任何事情(实际上没有打开Java application窗口,我知道情况是这样的,因为当我用鼠标单击Java application图标时,没