打印

请教位运算中(/8,%8)操作的优化问题

[复制链接]
1798|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kanprin|  楼主 | 2008-9-2 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
buf[num/8] |= (1 << (num%8));
buf[num/8] &= ~(1 << (num%8));

单上面两行产生的汇编代码,
第一行产生20条汇编代码,
第二行产生22条汇编代码,

曾做过的措施:
1:num/8改为num>>3 ,结果无变化。
2:num%8改为num&0x07,结果第一行多了2条汇编代码,第二行多了3条汇编代码。

位操作方面是否还有别的优化方式? 谢谢。

相关帖子

沙发
computer00| | 2008-9-2 10:23 | 只看该作者

什么型号的MCU

使用特权

评论回复
板凳
kanprin|  楼主 | 2008-9-2 10:36 | 只看该作者

回圈圈

MCU是AVR的mega64,编译环境为winavr   (gcc编译器)。

使用特权

评论回复
地板
农民讲习所| | 2008-9-2 10:58 | 只看该作者

先做个数值到位的转换函数

使用特权

评论回复
5
computer00| | 2008-9-2 11:11 | 只看该作者

没办法,你这个语句这么多操作,当然要很多指令了

还可能会调用函数。

光从语句上很难再精简了,从算法上想想办法吧。

使用特权

评论回复
6
kanprin|  楼主 | 2008-9-2 11:54 | 只看该作者

恩, 先想想所长说的

顺便等待一下别人的意见,
如果没啥改善的话就结贴了,呵呵。
谢谢关注。

使用特权

评论回复
7
kanprin|  楼主 | 2008-9-2 17:32 | 只看该作者

结贴

谢谢大家,to所长:多用个函数没见有多少改善,不过谢谢你的思路。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

343

帖子

0

粉丝