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

[复制链接]
2595|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 | 显示全部楼层

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

computer00 发表于 2008-9-2 11:11 | 显示全部楼层

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

还可能会调用函数。

光从语句上很难再精简了,从算法上想想办法吧。
 楼主| kanprin 发表于 2008-9-2 11:54 | 显示全部楼层

恩, 先想想所长说的

顺便等待一下别人的意见,
如果没啥改善的话就结贴了,呵呵。
谢谢关注。
 楼主| kanprin 发表于 2008-9-2 17:32 | 显示全部楼层

结贴

谢谢大家,to所长:多用个函数没见有多少改善,不过谢谢你的思路。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

343

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部