反汇编 第五节 C语言的判断与分支.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
——啊冲 第四节 C语言判断与分支的反汇编 If else 语句 int myfunction(int c) { if (c0 c10) { printf(c0 \n); } else if (c10 c100) { printf(c10 c100 \n); } else { printf(其它 \n); } return c; } If判断都是使用cmp再加上条件跳转指令。对于if(a b)的情况,一般都是使用否决法。如果a不成立,立刻跳到走,如果b不成立,同样跳走。从这里看出,在用C语言写一系列条件比较的时候,应该注意排列这些比较,让比较次数越少越好。 cmp  条件,初始值 jle 下一个分支 else if和else的特点是,在开始的地方,都有一条无条件跳转指令,跳转到判断结束处,阻止前面的分支执行结束后,直接进入这个分支的可能。这个分支能执行到的唯一途径是前面的判断条件不满足。 Else 则在jmp之后直接执行操作。而else if则开始重复if之后的操作,用cmp比较,然后用条件跳转指令进行跳转。 Swtich case 语句 条件分支中,有比较特殊的情况是switch.switch 的特点是有多个判断.因为swtich 显然不用判断大于小于,所以都是je,分别跳到每个case处。最后一个是无条件跳转,直接跳到default处。 switch(c) { case 0: printf(c=0); case 1: { printf(c=1); break; } default: printf(C是其它数); } 连续的比较与跳转让人想到switch Cmp … Je …. Cmp … Je … … Jmp … 至于case 和default 都非常简单.如果有break,则会增加一个无条件跳转.没有break 的情况下,没有任何循环控制代码. 反汇编练习: 把汇编代码还原成C语言。这种练习非常有好处,请务必一开始就勤加练习。这是消除对汇编的陌生感,顺利完成本节学习目地的唯一方法。

文档评论(0)

word.ppt文档 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档