C 8位微控制器的64位整数实现
我在研究OKI431微控制器。这是8位微控制器。我们不希望在我们的项目中执行任何浮点运算,所以我们消除了所有浮点运算,并以某种方式将它们转换为整数运算。但我们不能消除一个浮点运算,因为优化整数运算的计算需要64位整数,而micro本机不支持这一点。它有支持最多32位整数运算的C编译器。计算时间太长,这对用户来说是显而易见的 我想知道是否有任何64位整数库可以在C语言中方便地用于微控制器编码。或者,高效地写这些东西最简单的方法是什么?这里有效地意味着将所需的时间量降至最低C 8位微控制器的64位整数实现,c,optimization,64-bit,performance,microcontroller,C,Optimization,64 Bit,Performance,Microcontroller,我在研究OKI431微控制器。这是8位微控制器。我们不希望在我们的项目中执行任何浮点运算,所以我们消除了所有浮点运算,并以某种方式将它们转换为整数运算。但我们不能消除一个浮点运算,因为优化整数运算的计算需要64位整数,而micro本机不支持这一点。它有支持最多32位整数运算的C编译器。计算时间太长,这对用户来说是显而易见的 我想知道是否有任何64位整数库可以在C语言中方便地用于微控制器编码。或者,高效地写这些东西最简单的方法是什么?这里有效地意味着将所需的时间量降至最低 提前感谢。您可能需要进入
提前感谢。您可能需要进入组装程序才能完成此操作。你需要的显而易见的东西是:
- 加成
- 2s补码(反转和递增)
- 左右算术移位1
但它也可能更慢。因为这是一个微控制器,所以您可能需要使用一个简单的组装库。它支持的操作越少,它就越简单、越小。您还可能会发现,您可以避开小于64位的数字(可能是48位),并减少运行时间和寄存器要求。当小型嵌入式系统中浮点数学的速度有问题,并且整数数学不够时,定点数学可以快速替代
您确定编译器不支持64位长的无符号整数或类似整数吗?是的,我确定。令人惊讶的是,编译器非常基本。为什么需要64位?它是什么类型的操作?它是将湿度传感器的原始湿度读数转换为实际相对湿度。您有哪种需要64位的高科技湿度传感器?甚至没有一个A/D转换器接近这个精度。关于计算频率:计算必须定期进行。最短周期为10秒。@Donotalo:如果基本时钟为1mhz,我猜乘法或除法大约为一毫秒,所以这应该是可以的。@Donotalo:当然,基本的IEEE浮点软件库也在相同的范围内,不会是国产的。您的编译器可能有一个。@Donotalo:有一次我在8088(16位寄存器)上进行了IEEE浮点加法运算。大约需要300条指令,其中只有少数指令在实际添加。其余的是拆包、包装、规格化、检查特殊值等。但如果您不需要高频,它工作正常。我们可以使用两种时钟速度:32K和500K。32K是首选。是的,因为微控制器是8位,8的任意倍数就足够了。一些8位微控制器的编译器甚至可以选择24位浮点。扩展到64位数学只会减慢速度