当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

Vdsp(bf561)中的浮点运算(12):fract16加减运算[VC/C++编程]

赞助商链接



  本文“Vdsp(bf561)中的浮点运算(12):fract16加减运算[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

由于减法实际可以当作加上一个负数,因此我们只需求看加法操作.fract16的加法运算由add_fr1x16函数完成:

#pragma inline
#pragma always_inline
static fract16  add_fr1x16(fract16  __a, fract16  __b) {
fract16  __rval = __builtin_add_fr1x16(__a, __b);
return __rval;
}

从这里可以看出我们实际可以利用__builtin_add_fr1x16这一函数调用.

写一个很简单的程序:

typedef fract16 ft;

ft calc(ft x, ft y)
{
ft r;
r = __builtin_add_fr1x16(x, y);
return r;
}

这个函数展开后的汇编代码为:

_calc:
.LN_calc:
//-------------------------------------------------------------------
//   Procedure statistics:
//   Frame size            = 8
//   Scratch registers used:{R0.L,R0.H,R1.L,ASTAT0-ASTAT1}
//   Call preserved registers used:{FP,SP,RETS}
//-------------------------------------------------------------------
// line ".float_test.c":27
LINK 0;
W[FP + 12] = R1;
W[FP + 8] = R0;
.LN0:
// line 29
R0.L = R1.L + R0.L (S);
R0 = R0.L (X);
W[FP + 16] = R0;
.LN1:
// line 30
UNLINK;
RTS;
.LN._calc.end:
._calc.end:
.global _calc;
.type _calc,STT_FUNC;


  以上是“Vdsp(bf561)中的浮点运算(12):fract16加减运算[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Vdsp(bf561)中的浮点运算(7):float乘法运算
  • Vdsp(bf561)中的浮点运算(8):float除法运算
  • Vdsp(bf561)中的浮点运算(9):long double和float的对比
  • <b>Vdsp(bf561)中的浮点运算(10):fract16范例表示</b>
  • Vdsp(bf561)中的浮点运算(11):fract16与float的转换
  • Vdsp(bf561)中的浮点运算(12):fract16加减运算
  • <b>Vdsp(bf561)中的浮点运算(13):fract16乘法运算</b>
  • <b>Vdsp(bf561)中的浮点运算(14):fract16除法</b>
  • Vdsp(bf561)中的浮点运算(15):vdsp库的一个BUG
  • Vdsp(bf561)中的浮点运算(16):fract2x16范例
  • Vdsp(bf561)中的浮点运算(3):FLT_MIN
  • <b>Vdsp(bf561)中的浮点运算(4):FLT_MAX</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .