除数位-2的幂
和除数是2的幂一样,但是最后多一个neg取反
定式:
cdq
and edx, immA
add eax, immB
neg eax
还原:
和之前的还原一样,最后加上符号就可以了
除数为非2的幂
第一种情况
**定式:**
mov eax, MagicNumber(> 7fffffffh)
imul reg
sar edx, immA
mov reg, edx
shr, 1fh
add edx, reg
还原:
利用公式 |o| = 2^n / 2^32 - MagicNumber
可以得除数的绝对值
第二种情况
定式:
mov eax, MagicNumber( <= 7fffffffh)
imul reg
sub edx, reg
sar edx, immA
mov reg, edx
shr reg, 1fh
add edx, reg
遇到以上定式代码,MagicNumber为整数,而却乘法和移位中间见到了sub指令来调整,可以判定除数为负,我们可以利用公式还原:
|o| = 2^n / 2^32 - MagicNumber
可以得除数的绝对值
网友评论