首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于vs2010 release编译有些代码没有编译的有关问题[查看汇编后得知]

2013-01-19 
关于vs2010 release编译有些代码没有编译的问题[查看汇编后得知]原来的代码[非汇编]if(lpObj-comboSkill.

关于vs2010 release编译有些代码没有编译的问题[查看汇编后得知]
原来的代码[非汇编]
if(lpObj->comboSkill.dwTime>=GetTickCount())
{
         //_asm{mov dword ptr ss:[ebp+0x20],1}
         GCMagicAttackNumberSend(lpObj,59,lpTargetObj->m_Index,1);
bCombo=1;
}
使用release编译[汇编代码]
; 274  : if(lpObj->comboSkill.dwTime>=GetTickCount())

  000adff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
  000b339 87 94 00 00
00 cmp DWORD PTR [edi+148], eax
  000b972 12 jb SHORT $LN1@gObjAttack

; 275  : {
; 276  : //_asm{mov dword ptr ss:[ebp+0x20],1}
; 277  : GCMagicAttackNumberSend(lpObj,59,lpTargetObj->m_Index,1);

  000bb8b 0b mov ecx, DWORD PTR [ebx]
  000bd6a 01 push 1
  000bf51 push ecx
  000c06a 3b push 59; 0000003bH
  000c257 push edi
  000c3ba 96 6a 40 00 mov edx, 4221590; 00406a96H
  000c8ff d2 call edx
  000ca83 c4 10 add esp, 16; 00000010H
$LN1@gObjAttack:

; 278  : bCombo=1;
; 279  : }
; 280  : }
; 281  : }
; 282  : }
; 283  : }
; 284  : }
; 285  : _asm


发现 bCombo=1; 没有汇编,直接跳过此语句

而使用debug模式编译,那么bCombo=1;这个语句就是正确汇编的,请问大大们是什么原因?
[解决办法]
没用的src,会被优化的,
vc 有选项设置的,你可以选择不要,

不然  release版本 怎么会比  debug快呢
而且 有时候顺序也会被调整的,比如避免对同一个寄存器 进行连续操作

[解决办法]
不需要不编译。

热点排行