首页
论坛
课程
招聘
[分享]汇编优化几种方式。
2010-8-1 10:40 6416

[分享]汇编优化几种方式。

2010-8-1 10:40
6416
最近从书中看到几中汇编优化方式,拿出分享分享。
主要目的是提高运行效率,消除跳转指令。

1.求有符号32位整数的绝对值。

逻辑: if (eax<0) eax=-eax
cdq
xor eax, edx
sub eax, edx

这段指令之所以可以正常工作,基于这个一个事实

neg eax 等价于 not eax; inc eax 
而 not eax 又等价于 xor eax, -1

2.取两个数字中较小的一个

逻辑: if (ebx>eax) ebx=eax

无符号整数版本

sub eax, ebx
sbb edx, edx
and edx, eax
add ebx, edx

有符号版本

sub eax, ebx
cdq
and edx, eax
add ebx, edx

3.根据条件来选择赋值

逻辑: edx=(eax<0)?ebx:ecx

cdq
xor ebx, ecx
and edx, ebx
xor edx, ecx

看雪学院推出的专业资质证书《看雪安卓应用安全能力认证 v1.0》(中级和高级)!

收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fmicromath 活跃值 2010-8-3 18:02
2
0
mark.....

还有最常见的

eax = !! eax;

sub 0, eax
sbb eax, eax
neg eax

eax = ! eax;
sub 0, eax
sbb eax, eax
inc eax
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hhh两千 活跃值 2010-8-4 23:39
3
0
云风的书吧~
雪    币: 124
活跃值: 活跃值 (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ouyangtian 活跃值 2010-8-5 10:44
4
0
楼上真是好眼力!
雪    币: 903
活跃值: 活跃值 (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Golbeze 活跃值 2019-1-26 21:08
5
0
有人能说一下那本书的书名吗?
雪    币: 7651
活跃值: 活跃值 (2996)
能力值: ( LV12,RANK:212 )
在线值:
发帖
回帖
粉丝
一半人生 活跃值 3 2019-1-26 21:20
6
0
Golbeze 有人能说一下那本书的书名吗?
游戏之旅——我的编程感悟  云风 因该是他 那个真牛逼的男人
雪    币: 4294
活跃值: 活跃值 (346)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
如斯咩咩咩 活跃值 2019-1-26 23:12
7
0
老帖,顶一个
游客
登录 | 注册 方可回帖
返回