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

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

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

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞6
打赏
分享
最新回复 (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
云风的书吧~
雪    币: 130
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ouyangtian 2010-8-5 10:44
4
0
楼上真是好眼力!
雪    币: 1107
活跃值: (486)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Golbeze 2019-1-26 21:08
5
0
有人能说一下那本书的书名吗?
雪    币: 5291
活跃值: (11715)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
一半人生 5 2019-1-26 21:20
6
0
Golbeze 有人能说一下那本书的书名吗?
游戏之旅——我的编程感悟  云风 因该是他 那个真牛逼的男人
雪    币: 4709
活跃值: (1524)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
如斯咩咩咩 2019-1-26 23:12
7
0
老帖,顶一个
游客
登录 | 注册 方可回帖
返回