我目前正在从事一个项目,其中包括使用linux中的SDCC编译器在stm-8微控制器上进行裸金属编程。芯片中的内存很低,所以我试图让事情变得更精简。我用了8位和16位变量,一切都进行得很顺利。但最近我遇到了一个问题,我真的需要一个浮动变量。所以我写了一个函数,它接收一个16位的值,转换成一个浮点数,做我需要的数学运算,然后返回一个8位的数字。这使得我在MCU上的最后编译代码从1198字节上升到3462字节。现在,我知道使用浮点数是内存密集型的,可能需要调用许多函数来处理浮点数的使用,但是将程序的大小增加那么大似乎很疯狂。我想要一些帮助,了解这是为什么和发生了什么。
规格: MCU stm8151f2编译器: SDCC具有--opt_code_size选项
int roundNo(uint16_t bit_input) 
{ 
    float num = (((float)bit_input) - ADC_MIN)/124.0;
    return num < 0 ? num - 0.5 : num + 0.5; 
}https://stackoverflow.com/questions/60958440
复制相似问题