- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
位代码优化常识.doc
标 题:破解也不会,算法也忘了,翻了点东西,算为OCG作点贡献... (17千字)
发信人:hume
时 间:2002-4-23 19:59:34
详细信息:
32位代码优化常识
原作者: Benny/29A
翻译改写:hume/冷雨飘心 [注意:这不是鹦鹉学舌的翻译,我尽量以我的理解传达原文的本意] 关于代码优化的文章实在太多了,遗憾的是大部分我都没有看,尽管他们就摆在我的床边(每当我要看的时候就忍不住打哈欠...嘿嘿).这篇文章较短所以翻了一下. 代码优化的含义: 代码优化的目标当然是体积小和速度快,但是在通常的情况下二者就象鱼和熊掌一样不能得兼,我们通常寻找的是这二者的折中,究竟应该偏向何方,那就得具体看我们的实际需要. 但有些常识是我们应该牢记的,下面就结合我们最常遇到的具体情况来漫谈一下: 1.寄存器清0
我绝对不想再看到下面的写法:
1) mov eax, ;5 bytes
看起来上面的写法很符合逻辑,但你应当意识到还有更加优化的写法:
2) sub eax, eax ;2 bytes 3) xor eax, eax ;2 bytes
看看后面的字节数你就应该理解为什么要这么作了,除此之外,在速度上也没有损失,他们一样快,但你喜欢xor还是sub呢?我是比较喜欢xor,原因很简单,因为我数学不好....
不过Microsoft比较喜欢sub....我们知道windows运行的慢....(呵呵,当然是玩笑这并不是真正原因X-D!) 2.测试寄存器是否为0
我也不希望看到下面的代码:
1) cmp eax, ;5 bytes
je _label_ ;2/6 bytes (short/near) [* 注意很多指令针对eax作了优化,你要尽可能多地实用eax,比如CMP EAX, (5 bytes)
如果你使用其他寄存器,就是6bytes *]
让我们看看,简单的比较指令居然要用7/11 bytes,No No No,试试下面的写法:
2) or eax, eax ;2 bytes
je _label_ ;2/6 (short/near)
3) test eax, eax ;2 bytes
je _label_ ;2/6 (short/near)
呵呵,只有4/8 bytes,看看我们可节省多少字节啊3/4字节...那么接下来的问题是你喜欢OR还是TEST呢,就我个人而言,比较喜欢TEST,因为test不改变任何寄存器,并不向任何寄存器写入内容,这通常能在pentium机上取得更快的执行速度.
别高兴的太早,因为还有更值得我们高兴的事情,假如你要判断的的是eax寄存器,那么看看下面的,是不是更有启发?
4) xchg eax, ecx ;1 byte
jecxz _label_ ;2 bytes
在短跳转的情况下我们比2)和3)又节省了1字节.oh....___... 3.测试寄存器是否为0FFFFFFFFh
一些API返回-1,因此如何测试这个值呢?看你可能又要这样:
1) cmp eax, 0ffffffffh ;5 bytes
je _label_ ;2/6 bytes
hey,不要
您可能关注的文档
- 传感器期末试卷-A卷.doc
- 传感器期末试题.doc
- 传感器活页训练生.doc
- 传感器的分类.doc
- 传感器的应用实例一.doc
- 传感器的百科知识.doc
- 传感器的课堂教学案.doc
- 传感器简绍.doc
- 传感器类型.doc
- 传感器考试题.doc
- TSTIC 120083-2023 电化学储能电站电池系统数字化运维服务要求.pdf
- 病虫害防治工作总结.pdf
- TSTIC 120085-2023 船舶拖带服务规范.pdf
- 健身安全课件图片最新完整版本.pptx
- (新统编版)语文二年级下册 第六单元 大单元教学计划.docx
- TSTIC 120081-2023 港口与航道工程施工总承包服务规范.pdf
- THEBQIA 304-2024 型钢智能检测设备设计规范.pdf
- 健身房消防培训课件最新完整版本.pptx
- 广东省深圳市红山中学2024-2025学年高二(下)第一次段考语文试卷(含答案).docx
- 广东省深圳市建文外国语学校两学部2025届高三下学期二模物理试题(含答案).docx
文档评论(0)