首页 > 解决方案 > VC++编译器在汇编中取模

问题描述

有人可以解释一下模数(最好是一步一步)在汇编中的工作原理。这段代码的结果是这样的:

var = *(_DWORD *)(addrBase + 0x18);
if ( (signed int)var <= 5 || (_DWORD)var == 10 * ((signed int)var / 10) )

cmp     r9d, 5
jle     short loc_62714B
mov     eax, 66666667h
imul    r9d
sar     edx, 2
mov     eax, edx
shr     eax, 1Fh
add     edx, eax
lea     ecx, [rdx+rdx*4]
add     ecx, ecx
cmp     r9d, ecx
jnz     short loc_62718B

我怎么能把它改成: if ( (signed int)var <= 5 || (_DWORD)var == 30 * ((signed int)var / 30) ) 谢谢!

标签: assemblyx86-64

解决方案


推荐阅读