项目遇到一段调用非常多的代码,运算能力不足,各位路过帮帮看看怎么优化一下.
一段16字节整体左移一位,最后或上一位可变量C代码.跑在stm32或者arm9上.
改查表,汇编都行,谢过.代码如下
- uint32_t* st;
- st[3] = (st[3] << 1) | ((st[2] >> 31) & 1);
- st[2] = (st[2] << 1) | ((st[1] >> 31) & 1);
- st[1] = (st[1] << 1) | ((st[0] >> 31) & 1);
- st[0] = (st[0] << 1) | v;
复制代码
- __asm void *test(void *st, uint32_t v)
- {
- push {r4-r7}
- LDM r0,{r4-r7}
-
- LSL r7,r7,#1
- LSLS r6,r6,#1
- ORRCS r7,#1
- LSLS r5,r5,#1
- ORRCS r6,#1
- LSLS r4,r4,#1
- ORRCS r5,#1
- RORS r1,r1,#1
- ORRCS r4,#1
-
- STM r1,{r4-r7}
- pop {r4-r7}
- }
复制代码一周热门 更多>