liuhongyu_2408 发表于 2012-10-29 12:54

乘法、除法、快速返回都加进去编译,主函数如下调用为什么总是不行呢?
extern        float   FPMUL(float value1, float value2);                  // 二进制浮点数快速乘法
extern        float   FPDIV(float value1, float value2);                  // 二进制浮点数快速除法

float c,d,e ;

void main(void)
{
        c = 987.654321;
        d = 123.456789
        while(1)
        {
                e = 0;       
                e = FPMUL(c,d);
                e = FPDIV(c,d);
                _nop_();
        }
}

Cortex-M0 发表于 2012-10-29 13:29

你如外挂库,如出错,是由于FPMUL,FPDIV 和Keil C51中保留字冲突,将函数改个名字重新编译即可。

你如不外挂库,外挂函数源程序,如出错,除了上述原因,还有可能这两个函数FPMUL,FPDIV用到的支持函数没有外挂全。

liuhongyu_2408 发表于 2012-10-29 14:01

我挂了三个:   FPMUL.A51 、FPDIV.A51 、FPRET.A51 ,我只用浮点的乘除法。里面什么都不没改动,然后再主程序中直接按上述调用不行吗?

Cortex-M0 发表于 2012-10-29 17:45

因FPMUL,FPDIV 和Keil C51中保留字冲突,你写成
e = FPMUL(c,d);
   e = FPDIV(c,d);
不行,但可按Keil C51标准写
e = c * d;
e = c / d;
或将所有的函数改个名字,如改成FPMUL1, FPDIV1, 避开和Keil C51中保留字冲突,按你上述方法即OK !

Cortex-M0 发表于 2012-10-29 17:47

注:函数改名应从 FPMUL.A51 、FPDIV.A51 内改起。

ymzsl 发表于 2014-6-19 17:05

支持SH79F6488的硬件平台吗

wjx460714055 发表于 2021-11-23 18:05

大佬 有参考的**说明一下 32*32的浮点快速算法么看不太懂
页: 1 2 [3]
查看完整版本: 最据山寨特色的《中颖快速浮点乘、除法程库》!!!