F28035的CLA汇编指令算乘法的精度问题

两个数相乘,有下面两种实现办法:

     

实现1:    MMOVF32         MR0,        #100.002
                 MMPYF32         MR1,        MR0,    #18000.0            
                 MMOV32          @_Test1,      MR1

实现2:    MMOVF32          MR2,        #18000.0               
                 MMPYF32         MR3,        MR0,    MR2               
                 MMOV32          @_Test2,      MR3

通过观察Test1、Test2,发现实现2得到的结果更加精确。究其原因可以从MMPYF32  这条指令的描述看出来:

即#16FHi是32位浮点数的高16位,即一个立即数,在CAL中以被以符号(正或负)、指数和尾数的科学表示法表示了。这个乘法指令取走时,是以 忽略了低16位的,只去高16位,而低16位表示的是该数立即数的一部分小数,所以,这种乘法会损失不少精度。

所以实现1精度差点,但是速度快,省一个赋值操作,就省出了一个时钟。

实现2精度好,但是多费一个时钟。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子力学和生命科学

写作提升自己,打赏更能鼓励我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值