读书人

为何这里DWORD类型向Integer转换需要判

发布时间: 2012-02-22 19:36:56 作者: rapoo

为何这里DWORD类型向Integer转换需要判断正负,而且负数就失败
为何这里DWORD类型向Integer转换需要判断正负,而且负数就失败

losSSBCodeBackup.pas.614: g_Params.g_configer.SetParam('CodeMapCRC',_CalcCrc32Asm(PChar(pMem),C_CODE_COUNT*SINGLECODESIZE));
006E39E8 6A08 push $08
006E39EA 6800D4AC0C push $0cacd400
006E39EF 53 push ebx
006E39F0 E867DEFAFF call _CalcCrc32Asm //crc计算
006E39F5 8BC8 mov ecx,eax //eax计算结果
006E39F7 85C9 test ecx,ecx
006E39F9 7905 jns $006e3a00 //判断符号位
006E39FB E8780DD2FF call @BoundErr //负数则直接调用溢出
006E3A00 A1E0218200 mov eax,[$008221e0] //正数就到这里继续执行
006E3A05 8B8018010000 mov eax,[eax+$00000118]
006E3A0B BA083C6E00 mov edx,$006e3c08
006E3A10 E87F15FBFF call TXMLConfiger.SetParam

_CalcCrc32Asm原型 function _CalcCrc32Asm(lpSource: PChar; nLength:Integer;dwInit:DWORD=8):DWORD;stdcall;

TXMLConfiger.SetParam原型 procedure TXMLConfiger.SetParam(ParamName: string; Value: Integer);

[解决办法]
up

读书人网 >.NET

热点推荐