除數(shù)位-2的冪
和除數(shù)是2的冪一樣,但是最后多一個neg取反
定式:
cdq
and edx, immA
add eax, immB
neg eax
還原:
和之前的還原一樣,最后加上符號就可以了
除數(shù)為非2的冪
第一種情況
**定式:**
mov eax, MagicNumber(> 7fffffffh)
imul reg
sar edx, immA
mov reg, edx
shr, 1fh
add edx, reg
還原:
利用公式 |o| = 2^n / 2^32 - MagicNumber
可以得除數(shù)的絕對值
第二種情況
定式:
mov eax, MagicNumber( <= 7fffffffh)
imul reg
sub edx, reg
sar edx, immA
mov reg, edx
shr reg, 1fh
add edx, reg
遇到以上定式代碼,MagicNumber為整數(shù),而卻乘法和移位中間見到了sub指令來調(diào)整,可以判定除數(shù)為負,我們可以利用公式還原:
|o| = 2^n / 2^32 - MagicNumber
可以得除數(shù)的絕對值