【发布时间】:2014-04-25 03:25:01
【问题描述】:
是否有人拥有(或可以轻松编写)用于 ARM Cortex M0+ 处理器在 Thumb 模式下的最佳内联汇编函数,以将两个 32 位数字相乘并返回一个 64 位数字?
由于 M0+ 没有长乘法,唯一可以实现的方法是通过原始乘法,编译器调用__aeabi_lmul,它在 34 条指令中执行 64x64=64 乘法。鉴于输入只有 32 位,我希望存在一个明显更快的算法。
【问题讨论】:
-
我找到了这个gcc patch。我不明白您是否正是在无法访问umull的情况下,但也有一些汇编代码。看看有没有帮助
-
Cortex-M0 是 ARMv6 架构,看起来 OP 实际上是在获取 gcc 补丁中提到的“慢”版本。
标签: algorithm assembly arm multiplication cortex-m