除法以及求余运算 /** * 结论: *1. 大部分arm都有除法指令 , 但需要指定相应的编译标志 , 不然就会直接调用 c 库函数 *2. 指定相应的体系架构 , 可以生成更优的代码 * compile with arm-linux-gnueabihf-gcc v8.3 * flags: -O3 -mcpu=cortex-a7 -mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon * 000103d8 /** * 结论: *1. 尽量将求余操作转为加法操作 * compile with arm-linux-gnueabihf-gcc v8.3 * flags: -O3 -mcpu=cortex-a7 -mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon * 000103d8 【第三篇 ARM C 高效编程 - 除法以及求余】/** * 结论: *1. 无符号数比有符号数除法更快 *2. 除数如果为 2 的幂 。将转为超快的移位操作 *3. 除数如果为常数 , 也可以转为移位操作 , 不过要多一些指令 , 尤其是多了一条乘法指令 *4. 其余情况就只能调用除法指令 * compile with arm-linux-gnueabihf-gcc v8.3 * flags: -O3 -mcpu=cortex-a7 -mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon * 00010410 : * 10410:e1a00220lsrr0, r0, #4 * 10414:e12fff1ebxlr * 00010424 : * 10424:e280300faddr3, r0, #15 * 10428:e3500000cmpr0, #0 * 1042c:b1a00003movltr0, r3 * 10430:e1a00240asrr0, r0, #4 * 10434:e12fff1ebxlr * 000103e0 : * 103e0:e730f110udivr0, r0, r1 ; 除法指令 * 103e4:e12fff1ebxlr * 000103e8 : * 103e8:e30f30f1movwr3, #61681; 0xf0f1 * 103ec:e34f30f0movtr3, #61680; 0xf0f0 * 103f0:e0803093umullr3, r0, r3, r0; 长乘法指令 * 103f4:e1a00220lsrr0, r0, #4 * 103f8:e12fff1ebxlr */uint32_t div16u(uint32_t a){return a / 16;}int div16s(int a){return a / 16;}uint32_t div_xx_u(uint32_t a, uint32_t b){return a / b;}uint32_t div17u(uint32_t a){return a / 17;}
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
