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())
000ad ff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
000b3 39 87 94 00 00
00 cmp DWORD PTR [edi+148], eax
000b9 72 12 jb SHORT $LN1@gObjAttack
; 275 : {
; 276 : //_asm{mov dword ptr ss:[ebp+0x20],1}
; 277 : GCMagicAttackNumberSend(lpObj,59,lpTargetObj->m_Index,1);
000bb 8b 0b mov ecx, DWORD PTR [ebx]
000bd 6a 01 push 1
000bf 51 push ecx
000c0 6a 3b push 59 ; 0000003bH
000c2 57 push edi
000c3 ba 96 6a 40 00 mov edx, 4221590 ; 00406a96H
000c8 ff d2 call edx
000ca 83 c4 10 add esp, 16 ; 00000010H
$LN1@gObjAttack:
; 278 : bCombo=1;
; 279 : }
; 280 : }
; 281 : }
; 282 : }
; 283 : }
; 284 : }
; 285 : _asm
发现 bCombo=1; 没有汇编,直接跳过此语句
而使用debug模式编译,那么bCombo=1;这个语句就是正确汇编的,请问大大们是什么原因?
4 个解决方案
#1
没用的语句就可以优化掉。
#2
没用的src,会被优化的,
vc 有选项设置的,你可以选择不要,
不然 release版本 怎么会比 debug快呢
而且 有时候顺序也会被调整的,比如避免对同一个寄存器 进行连续操作
vc 有选项设置的,你可以选择不要,
不然 release版本 怎么会比 debug快呢
而且 有时候顺序也会被调整的,比如避免对同一个寄存器 进行连续操作
#3
你好,之前没人回,我就很灰心,请问怎么 vs哪里可以设置的
因为我下面是用汇编进行使用此代码的,所以一定需要的,谢谢
#4
不需要不编译。
#1
没用的语句就可以优化掉。
#2
没用的src,会被优化的,
vc 有选项设置的,你可以选择不要,
不然 release版本 怎么会比 debug快呢
而且 有时候顺序也会被调整的,比如避免对同一个寄存器 进行连续操作
vc 有选项设置的,你可以选择不要,
不然 release版本 怎么会比 debug快呢
而且 有时候顺序也会被调整的,比如避免对同一个寄存器 进行连续操作
#3
你好,之前没人回,我就很灰心,请问怎么 vs哪里可以设置的
因为我下面是用汇编进行使用此代码的,所以一定需要的,谢谢
#4
不需要不编译。