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

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

2010-8-1 10:40
8678

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

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直播授课

收藏
免费 7
支持
分享
赞赏记录
参与人
雪币
留言
时间
Youlor
为你点赞~
2024-5-31 03:08
伟叔叔
为你点赞~
2024-2-11 00:07
QinBeast
为你点赞~
2024-1-16 00:47
shinratensei
为你点赞~
2024-1-9 02:41
心游尘世外
为你点赞~
2023-12-24 00:49
飘零丶
为你点赞~
2023-12-12 04:47
PLEBFE
为你点赞~
2023-3-18 06:06
最新回复 (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
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上真是好眼力!
2010-8-5 10:44
0
雪    币: 1107
活跃值: (611)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
有人能说一下那本书的书名吗?
2019-1-26 21:08
0
雪    币: 2762
活跃值: (13339)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
6
Golbeze 有人能说一下那本书的书名吗?
游戏之旅——我的编程感悟  云风 因该是他 那个真牛逼的男人
2019-1-26 21:20
0
雪    币: 4709
活跃值: (1670)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
老帖,顶一个
2019-1-26 23:12
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册