网站大量收购独家精品文档,联系QQ:2885784924

位代码优化常识.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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,不要

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档