用于8位微控制器的64位整数实现

时间:2010-09-24 14:29:54

标签: c optimization 64-bit performance microcontroller

我正在研究OKI 431微控制器。这是8位微控制器。我们不希望在我们的项目中执行任何浮点运算,因此我们已经消除了所有浮点运算并以某种方式将它们转换为整数运算。但是我们无法消除一个浮点运算,因为优化整数运算的计算需要64位整数,而micro本身并不支持。它有C编译器,支持最多32位整数运算。计算花费的时间太长,这对用户来说是显而易见的。

我想知道是否有任何64位整数库可以在C中轻松用于微控制器编码。或者有效编写此类内容的最简单方法是什么?这里有效地意味着最小化所需的时间。

提前致谢。

3 个答案:

答案 0 :(得分:3)

由于这是一个微控制器,您可能需要使用一个简单的汇编库。支持更简单和更小的操作所需的操作越少。您可能还会发现,您可以使用小于64位的数字(可能是48位),并减少运行时间和寄存器要求。

答案 1 :(得分:1)

您可能需要进行组装才能执行此操作。你需要的显而易见的事情是:

  • 除了

  • 2s补充(反转和增量)

  • 左右算术移位1

从那些你可以建立减法,乘法,长除法和更长的班次。请记住,将两个64位数相乘可得到一个128位数,而长除法可能需要能够获得一个128位的红利。

这看起来会非常缓慢,但在这样一台机器中的假设是你需要一个小的足迹,而不是速度。我假设您以最低频率进行这些计算。

开源库可能会稍微快一些, 但它也可能更慢。

答案 2 :(得分:0)