首页
社区
课程
招聘
[旧帖] [已解决]来帮我看这串汇编代码 0.00雪花
发表于: 2008-12-30 07:34 2955

[旧帖] [已解决]来帮我看这串汇编代码 0.00雪花

2008-12-30 07:34
2955
mov     edx, dword ptr [ebp-4]
mov     dword ptr [ebp-C], edx
mov     eax, 55555556
imul    dword ptr [ebp-C]
mov     ecx, edx
mov     eax, dword ptr [ebp-C]
sar     eax, 1F
sub     ecx, eax
mov     eax, ecx
add     eax, eax
add     eax, ecx
mov     edx, dword ptr [ebp-C]
sub     edx, eax
mov     eax, edx

明眼的一看就知道这是在求余了,声明一下,[ebp-4]放的是待除数

这套算法怎么算都对,我想知道这是怎么算的,为什么要跟55555556H相乘,为什么要sar1F

mov     eax, ecx
add     eax, eax
add     eax, ecx

还有这段也不理解

为什么不直接div呢

有没有人能解释一下这套算法

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 716
活跃值: (36)
能力值: ( LV12,RANK:271 )
在线值:
发帖
回帖
粉丝
2
x - x / 3 * 3 相当于 x % 3

imul 55555556
sar eax, 1F
sub edx ,eax
mov eax, edx

表示 * 55555556/ 2^32 近似为1/3

mov eax, ecx
add eax, eax
add eax, ecx

表示eax = 3 * ecx

这是用乘法代替除法提高运算速度的一种优化
2008-12-30 09:08
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
太谢谢了,这个算法真是王道啊
2008-12-30 15:44
0
游客
登录 | 注册 方可回帖
返回
//