【问题标题】:Disassembly code from visual studioVisual Studio 的反汇编代码
【发布时间】:2018-03-21 03:17:15
【问题描述】:

使用 WinDBG 调试可执行文件的汇编代码,编译器似乎在两个连续语句之间插入了一些其他代码。这些陈述非常简单,例如它们不适用于函数调用的复杂对象;

int a, b;
char c;
long l;
a = 0;          // @@
b = a + 1;      // %%
c = 1;          // ##
l = 1000000;
l = l + 1;

反汇编是

@@    008a1725 c745f800000000  mov     dword ptr [ebp-8],0
008a172c 80bd0bffffff00  cmp     byte ptr [ebp-0F5h],0      ss:002b:0135f71f=00
008a1733 750d            jne     test!main+0x42 (008a1742)
008a1735 687c178a00      push    offset test!main+0x7c (008a177c)
008a173a e893f9ffff      call    test!ILT+205(__RTC_UninitUse) (008a10d2)
008a173f 83c404          add     esp,4
008a1742 8b45ec          mov     eax,dword ptr [ebp-14h]
%% 008a1745 83c001          add     eax,1
008a1748 c6850bffffff01  mov     byte ptr [ebp-0F5h],1
008a174f 8945ec          mov     dword ptr [ebp-14h],eax
## 008a1752 c645e301        mov     byte ptr [ebp-1Dh],1

请注意,反汇编列表中的@@%%##显示了对应的C++行。

那么callcmpjnepush 是什么?

【问题讨论】:

    标签: visual-studio disassembly


    【解决方案1】:

    这是编译器运行时错误检查(RTC),未初始化变量的RTC开关检查,我认为您可以从Visual Studio(编译器选项)管理它。

    欲了解更多信息,请查看this。部分/RTCu switch

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多