各位路过帮忙优化一段C语言16字节左移一位的C代码

2019-12-11 18:35发布

项目遇到一段调用非常多的代码,运算能力不足,各位路过帮帮看看怎么优化一下.
一段16字节整体左移一位,最后或上一位可变量C代码.跑在stm32或者arm9上.
改查表,汇编都行,谢过.代码如下

  1. uint32_t* st;
  2. st[3] = (st[3] << 1) | ((st[2] >> 31) & 1);
  3. st[2] = (st[2] << 1) | ((st[1] >> 31) & 1);
  4. st[1] = (st[1] << 1) | ((st[0] >> 31) & 1);
  5. st[0] = (st[0] << 1) | v;
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
lvfv
1楼-- · 2019-12-11 22:19
这代码用不了几个时钟周期吧,还是从别的地方着手吧。
tomzbj
2楼-- · 2019-12-11 23:45
<<1没啥好办法吧, >>31再&1这个,应该可以改用位段操作? 不过stm32f0xx不能用
zzm24
3楼-- · 2019-12-12 04:58
 精彩回答 2  元偷偷看……
NJ8888
4楼-- · 2019-12-12 09:53
本帖最后由 NJ8888 于 2019-4-19 11:25 编辑

错了,删了
JasonGao
5楼-- · 2019-12-12 10:16
NJ8888 发表于 2019-4-19 11:24
错了,删了

注意审题要仔细啊
at90s
6楼-- · 2019-12-12 11:59
zzm24 发表于 2019-4-19 11:19
ARM9上IAR开最High speed优化的样子,还是太多指令
能不能汇编批量操作一波

生成的这个汇编指令基本是最优的了

一周热门 更多>