分享好友 最新动态首页 最新动态分类 切换频道
除法运算的汇编优化(用乘法和右移来代替)
2024-12-27 12:20

再来看一个例子,巩固一下。假设有以下3行反汇编代码,现在来反推回高级代码。

3行代码合起来即:(R0 * 0xCCCCCCCD) >> 34。

除法优化原理:a/b = (a*c) >> n,其中c=(2^n)/b。

由(R0 * 0xCCCCCCCD) >> 34,可知n=34,c=0xCCCCCCCD。根据c=(2^ n)/b,可知b=(2^ n)/c=(2^34)/0xCCCCCCCD=4.99999999971,即b=5(因为c值有一个很小的,不影响除法运算结果的误差,所以这里得到的值近似5)。所以,上述3行汇编代码对应的高级代码即:R0/5。与实际的源码正好对应的上:

再回头看一下刚开始提到的“R0 * 0xAAAAAAAB >> 32”,这个对应的高级代码应该是什么?

除法优化原理:a/b = (a*c) >> n,其中c=(2^n)/b。

由“(R0 * 0xAAAAAAAB) >> 32”,可知n=32,c=0xAAAAAAAB。根据c=(2^ n)/b,可知b=(2^ n)/c=(2^32)/0xAAAAAAAB=1.49999999983,即b=1.5。所以“(R0 * 0xAAAAAAAB) >> 32”即R0/1.5。不过,这里提到的除法优化是针对整数常量来说的,所以实际就是R0/(3/2),即R0*2/3。

现在把test函数简单修改一下:

原先参数类型是unsigned int,现在参数类型是int。看一下a/3对应的反汇编代码:

这4行代码合起来就是:(R0 * 0x55555556) >> 32 – (R0 >> 31),其中R0 >> 31是算数右移。先忽略后面的减法,只关心“(R0*0x55555556)>>32”。

除法优化原理:a/b = (a*c) >> n,其中c=(2^n)/b。

由“(R0 * 0x55555556) >> 32”,可知n=32,c=0x55555556。根据c=(2^ n)/b,可知b=(2^ n)/c=(2^32)/0x55555556=2.9999999986,即b=3。所以“(R0 * 0x55555556) >> 32”即R0/3。这么一看,貌似后面的“– (R0 >> 31)”是多余的。其实不然,简单分析一下。

参数类型是int,“R0 >> 31”就是取符号位(算数右移)。那么有两种情况:

1)R0是正数,那么R0 >> 31结果为0,减法相当于什么也没做。
除法优化原理还是:a/b = (a*c) >> n,其中c=(2^n)/b。

2)R0是负数,那么R0 >> 31结果为0xFFFFFFFF,即-1,减-1相当于加1。
除法优化原理变成:a/b =( (a*c) >> n) + 1,其中c=(2^n)/b。

为什么被除数为负数时,后面要加1呢?因为“(a*c) >> n”是向下取整的结果。加1是为了向0取整,而c/c++语言对于整数除法的规定正是向0取整。

最新文章
试试长亭科技吧,阿里云子公司
❶让你和+2老板汇报nbsp;如果是好事,就是给你露脸的机会,展示他带出来的人能力还不错;如果是坏事,就是让你主动去背锅,展示他不知情且还有管理空间nbsp;知彼解己,抓住每次和+2或大老板们汇报的机会,提前做充分准备nbsp;❷让你去做统
独立站卖家如何布局Google SEO?
做,大部分商家会选择见效快的付费,随着平台CPM节节攀升,群里好多人反馈广告花费更高了,广告效果却变差了。跑广告受伤的人怎么办?我们怎么能放过免费流量呢,FunnPin独立站学院特特别课堂开始了:独立站卖家应该如何布局Google SEO?什
高级设计师如何做搜索功能?来看这篇超全面的总结!
宜信大数据创新中心-UI 设计师李婷婷 :文章带大家一起了解如何通过设计提升搜索功能的视觉层次、情感体验、搜索效率等。一、搜索功能的作用搜索是我们经常使用的功能,当我们面对复杂的信息时,想找到目标信息,就会寻找搜索功能的位置,
网站优化是什么?介绍网站优化方式与好处
网站优化的术语是SEO优化,它是利用搜索引擎的搜索规则来提高当前网站在相关搜索引擎中的自然排名。接下来我们一起看看网站优化的好处和优化方法吧。一、网站优化的好处1、发挥企业产品和品牌推广作用经过SEO优化后,企业网站可以获得更高
马凯:建设高素质专业化高校党务干部队伍的思考
摘要:高校党务工作队伍是高校党建工作的中坚力量,建设高素质专业化高校党务干部队伍应立足“优”字抓选配、突出“学”字抓培育、体现“严”字抓管理、坚持“活”字抓交流、把握“研”字抓规律,全面加强高校党务干部队伍建设。关键词:高
打造在线影视帝国,电影网站搭建实战全攻略
从零开始,本攻略将带你全面构建电影网站。涵盖网站规划、平台选择、内容管理、用户体验优化等关键步骤,助你打造一个专业的在线影视帝国。跟随指南,轻松搭建并运营你的电影网站。初期筹备网站构建网站管理在互联网的浪潮中,电影网站已成
白斑健康:西安哪家医院看的好白癜风-老年人如何进行白癜风病情的护理呢?
全新动态:西安治疗白癜风的医院效果如何“具体排行榜”-白癜风用药时还在扩散该怎么办?西安专业的白癜风医院有:1、西安白癜风医院,2、西安白癜风,3、西安正规白癜风医院,4、西安白癜风专科医院。白癜风患者在治疗过程中,若用药期间白
汕头怎么制作微信公众号汕头网站关键词优化排名怎么做汕头网站开发价格汕头推荐的关键词怎么优化汕头百度关键词快速排名汕头做微信公众号
龙腾网络网站制作|网络推广一物一码系统|微信商城制作电话:13292208571(微信)汕头网站制作推广公司 汕头怎样建一个微信公众号 汕头如何做微信公众号? 汕头整站优化网站建设 汕头微信制作公众号 汕头如何建立公众号微信 汕头微信公众号制
电商排名前十名品牌都有哪些?
  随着互联网的发展,人们购物不再局限于实体店铺,方便又快捷的网上购物形式逐渐进入到了大家的视野,而电商已经成为了人们生活中一个不可分割的需求,那么大家对于电商品牌都了解多少呢?下面小编就来为大家盘点盘点电商排名前十名的品
相关文章
推荐文章
发表评论
0评