首页
社区
课程
招聘
哪位给解释一下这段算法作用
发表于: 2013-3-29 12:37 3370

哪位给解释一下这段算法作用

2013-3-29 12:37
3370
传入1个数字参数
pop eax
pop edx

结果判断是edx和eax是否为0
005D80FB   .  83FA 00       cmp     edx, 0
005D80FE   .  75 29         jnz     short 005D8129                             ;  不能跳
005D8100   .  83F8 00       cmp     eax, 0
005D8103   .  75 24         jnz     short 005D8129                             ;  不能跳

函数入口
00405644  /$  55            push    ebp
00405645  |.  53            push    ebx
00405646  |.  56            push    esi
00405647  |.  57            push    edi
00405648  |.  31FF          xor     edi, edi
0040564A  |.  8B5C24 14     mov     ebx, dword ptr [esp+14]
0040564E  |.  8B4C24 18     mov     ecx, dword ptr [esp+18]
00405652  |.  09C9          or      ecx, ecx
00405654  |.  75 08         jnz     short 0040565E
00405656  |.  09D2          or      edx, edx
00405658  |.  74 5D         je      short 004056B7
0040565A  |.  09DB          or      ebx, ebx
0040565C  |.  74 59         je      short 004056B7
0040565E  |>  09D2          or      edx, edx
00405660  |.  79 0A         jns     short 0040566C
00405662  |.  F7DA          neg     edx
00405664  |.  F7D8          neg     eax
00405666  |.  83DA 00       sbb     edx, 0
00405669  |.  83CF 01       or      edi, 1
0040566C  |>  09C9          or      ecx, ecx
0040566E  |.  79 07         jns     short 00405677
00405670  |.  F7D9          neg     ecx
00405672  |.  F7DB          neg     ebx
00405674  |.  83D9 00       sbb     ecx, 0
00405677  |>  89CD          mov     ebp, ecx
00405679  |.  B9 40000000   mov     ecx, 40
0040567E  |.  57            push    edi
0040567F  |.  31FF          xor     edi, edi
00405681  |.  31F6          xor     esi, esi
00405683  |>  D1E0          /shl     eax, 1
00405685  |.  D1D2          |rcl     edx, 1
00405687  |.  D1D6          |rcl     esi, 1
00405689  |.  D1D7          |rcl     edi, 1
0040568B  |.  39EF          |cmp     edi, ebp
0040568D  |.  72 0B         |jb      short 0040569A
0040568F  |.  77 04         |ja      short 00405695
00405691  |.  39DE          |cmp     esi, ebx
00405693  |.  72 05         |jb      short 0040569A
00405695  |>  29DE          |sub     esi, ebx
00405697  |.  19EF          |sbb     edi, ebp
00405699  |.  40            |inc     eax
0040569A  |>^ E2 E7         \loopd   short 00405683
0040569C  |.  89F0          mov     eax, esi
0040569E  |.  89FA          mov     edx, edi
004056A0  |.  5B            pop     ebx
004056A1  |.  F7C3 01000000 test    ebx, 1
004056A7  |.  74 07         je      short 004056B0
004056A9  |.  F7DA          neg     edx
004056AB  |.  F7D8          neg     eax
004056AD  |.  83DA 00       sbb     edx, 0
004056B0  |>  5F            pop     edi
004056B1  |.  5E            pop     esi
004056B2  |.  5B            pop     ebx
004056B3  |.  5D            pop     ebp
004056B4  |.  C2 0800       retn    8
004056B7  |>  F7F3          div     ebx
004056B9  |.  92            xchg    eax, edx
004056BA  |.  31D2          xor     edx, edx
004056BC  \.^ EB F2         jmp     short 004056B0
004056BE   .  C3            retn

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 29349
活跃值: (7890)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
2
__int64 mod64(__int64 b, __int64 a)
{
	b = b > 0 ? b : (-b);
	return 	b % a;
}
2013-3-29 14:36
0
游客
登录 | 注册 方可回帖
返回
//