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

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

2010-8-1 10:40
8568

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

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mark.....

还有最常见的

eax = !! eax;

sub 0, eax
sbb eax, eax
neg eax

eax = ! eax;
sub 0, eax
sbb eax, eax
inc eax
2010-8-3 18:02
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
云风的书吧~
2010-8-4 23:39
0
雪    币: 130
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上真是好眼力!
2010-8-5 10:44
0
雪    币: 1107
活跃值: (531)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
有人能说一下那本书的书名吗?
2019-1-26 21:08
0
雪    币: 2157
活跃值: (12639)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
6
Golbeze 有人能说一下那本书的书名吗?
游戏之旅——我的编程感悟  云风 因该是他 那个真牛逼的男人
2019-1-26 21:20
0
雪    币: 4709
活跃值: (1575)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
老帖,顶一个
2019-1-26 23:12
0
游客
登录 | 注册 方可回帖
返回
//