取模优化 取模运算是得到除法运算之后的余数的运算,这里简单提一下其相关的优化
示例:
mov eax, VAL
and eax, 8000001F
jns LAB1
dec eax
or eax, FFFFFFE0
inc reg
LAB1:
说明:这是一取模运算的示例,VAL是被除数,and的立即数是一个掩码,用来去掉高位保留地位,根据保留的低位数量,可以得到2^k次方的k,所以这里也就是一个x%(x^k)的取模运算
示例2:
mov eax, VAL
cdq
and edx, 1F
add eax, edx
sar eax, 5
shl eax, 5
sub VAL, eax
【android|逆向工程之表达式优化识别(5)-取模】这也是一个取模运算,区别在于这是一个没有分支语句的取模运算,主要思路是余数 = 被除数 - 商 * 2^k的,可以自行分析,写出表达式,应该难度不大了。