-
-
[旧帖]
[建议]代码的优化
0.00雪花
-
发表于:
2009-6-9 21:49
3529
-
单单优化代码的方向无非就是更更小.这 像过去地主希望长工吃的少干的多一样.
但鱼与熊掌不可兼得.我们平时是取折中主义.根据实际需要做取舍
一 积存器清零
下面的写法是笨蛋的做法
1 mov eax,00000000H ;5byte
写成下面的做法也比上面好呀;
2 sub eax,eax ;2byte
最经典的写法是
3 xor eax,eax ;2byte
二 测试积存器是否为0
这种做法很平庸
1 cmp eax,00000000h ;5byte
je label ;2/6btye
(做为累加器eax被大多指令优化了;cmp ebx ;6btye)
2 or eax,eax ;2btye
je label ;2/6btye
其实把xor改为test也行还不改变psw
要是是eax的话
3 xchg eax,ecx ;1btye
jecxz label ;2btye
三 测试积存器是否为0ffffffffh
有的api返回-1你会
1 cmp eax,0ffffffffh ;5byte
je label ;2/6btye
很正常呀 其实你想一下-1+1=0呀!
2 inc eax ;1
je label ;2/6
dec eax ;1
四 置寄存器为0fffffffh
api经常要返回-1?这样就行了
1 mov eax,0fffffffh ;5
可这是笨方法
2 xor eax,eax/sub eax eax ;5
dec eax ;1
也可以
3 stc ;1
sbb eax,eax ;2
最绝的是这样
jnc label
sbb eax,eax
label:……
五 要知道有了新指令不用是浪费
movzx要会用
movzx eax,bx ;3
待て
[课程]FART 脱壳王!加量不加价!FART作者讲授!