亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? math24x.h

?? FreeRTOS 是一個源碼公開的免費的嵌入式實時操作系統
?? H
字號:
#pragma library 1
/*
fixed16_8 operator* _xmul16_8( fixed16_8 arg1, fixed16_8 arg2);
fixedU16_8 operator* _xmulU16_8( fixedU16_8 arg1, fixedU16_8 arg2);
fixed16_8 operator/ _xdiv16_8( fixed16_8 arg1, fixed16_8 arg2);
fixedU16_8 operator/ _xdivU16_8( fixedU16_8 arg1, fixedU16_8 arg2);
fixed8_16 operator* _xmul8_16( fixed8_16 arg1, fixed8_16 arg2);
fixedU8_16 operator* _xmulU8_16( fixedU8_16 arg1, fixedU8_16 arg2);
fixed8_16 operator/ _xdiv8_16( fixed8_16 arg1, fixed8_16 arg2);
fixedU8_16 operator/ _xdivU8_16( fixedU8_16 arg1, fixedU8_16 arg2);
*/

// DEFINABLE SYMBOLS (in the application code):
//#define FX_OPTIM_SPEED  // optimize for SPEED: default
//#define FX_OPTIM_SIZE   // optimize for SIZE

#if __CoreSet__ < 1200  ||  __CoreSet__ >= 2100
 #error math24x.h does not support the selected device
#endif

#if __CoreSet__ < 1600
 #define genAdd(r,a) W=a; btsc(Carry); W=incsz(a); r+=W;
 #define genSub(r,a) W=a; btss(Carry); W=incsz(a); r-=W;
 #define genAddW(r,a) W=a; btsc(Carry); W=incsz(a); W=r+W;
 #define genSubW(r,a) W=a; btss(Carry); W=incsz(a); W=r-W;
#else
 #define genAdd(r,a) W=a; r=addWFC(r);
 #define genSub(r,a) W=a; r=subWFB(r);
 #define genAddW(r,a) W=a; W=addWFC(r);
 #define genSubW(r,a) W=a; W=subWFB(r);
#endif

#if defined FX_OPTIM_SIZE
 // do not use 8*8 bit HW multiplier
#elif __CoreSet__ == 1700 || __CoreSet__ == 1800
 #define hw_mult8x8(a,b)  { W = a; multiply(b); }
 #define loRES PRODL
 #define hiRES PRODH
#elif __CoreSet__ == 2000
 #define hw_mult8x8(a,b)  { W = a; multiply(b); }
 #define loRES W
 #define hiRES MULH
#endif



fixed16_8 operator* _xmul16_8( fixed16_8 arg1, fixed16_8 arg2)
{
    fixed16_8 rval;
    char sign = arg1.high8 ^ arg2.high8;
    if (arg1 < 0)
        arg1 = -arg1;
    if (arg2 < 0)
        arg2 = -arg2;

   #ifdef hw_mult8x8

    hw_mult8x8( arg1.low8, arg2.low8);   // p1
    rval.low8 = hiRES;
    rval.high16 = 0;

    hw_mult8x8( arg1.mid8, arg2.low8);  // p2
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.low8, arg2.mid8);  // p2
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.high8, arg2.low8);  // p3
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.mid8, arg2.mid8);  // p3
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.low8, arg2.high8);  // p3
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.high8, arg2.mid8);  // p4
    rval.high8 += hiRES;

    hw_mult8x8( arg1.mid8, arg2.high8);  // p4
    rval.high8 += hiRES;

   #else

    char counter = sizeof(arg1)*8;
    char rvalL = 0;
    do  {
        Carry = 0;
        rvalL = rl( rvalL);
        rval = rl( rval);
        arg1 = rl( arg1);
        if (Carry)  {
            rvalL += arg2.low8;
            genAdd( rval.low8, arg2.mid8);
            genAdd( rval.mid8, arg2.high8);
            if (Carry)
                rval.high8++;
        }
        counter = decsz(counter);
    } while (1);

   #endif

    if (sign & 0x80)
        rval = -rval;
    return rval;
}


fixedU16_8 operator* _xmulU16_8( fixedU16_8 arg1, fixedU16_8 arg2)
{
    fixedU16_8 rval;

   #ifdef hw_mult8x8

    hw_mult8x8( arg1.low8, arg2.low8);   // p1
    rval.low8 = hiRES;
    rval.high16 = 0;

    hw_mult8x8( arg1.mid8, arg2.low8);  // p2
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.low8, arg2.mid8);  // p2
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.high8, arg2.low8);  // p3
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.mid8, arg2.mid8);  // p3
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.low8, arg2.high8);  // p3
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.high8, arg2.mid8);  // p4
    rval.high8 += hiRES;

    hw_mult8x8( arg1.mid8, arg2.high8);  // p4
    rval.high8 += hiRES;

   #else

    char counter = sizeof(arg1)*8;
    char rvalL = 0;
    do  {
        Carry = 0;
        rvalL = rl( rvalL);
        rval = rl( rval);
        arg1 = rl( arg1);
        if (Carry)  {
            rvalL += arg2.low8;
            genAdd( rval.low8, arg2.mid8);
            genAdd( rval.mid8, arg2.high8);
            if (Carry)
                rval.high8++;
        }
        counter = decsz(counter);
    } while (1);

   #endif

    return rval;
}


fixed16_8 operator/ _xdiv16_8( fixed16_8 arg1, fixed16_8 arg2)
{
    fixedU16_8 rm = 0;
    char counter = sizeof(arg1)*8+8+1;
    char c2 = sizeof(arg1)*8 + 1;
    char sign = arg1.high8 ^ arg2.high8;
    if (arg1 < 0)  {
       INVERT:
        arg1 = -arg1;
        if (c2 & 0x80)
            goto EXIT;
    }
    if (arg2 < 0)
        arg2 = -arg2;
    goto ENTRY;
    do  {
        c2 = decsz(c2);
        btsc(c2.7);
        Carry = 0;
        rm = rl( rm);
        W = rm.low8 - arg2.low8;
        genSubW( rm.mid8, arg2.mid8);
        genSubW( rm.high8, arg2.high8);
        if (!Carry)
            goto ENTRY;
        rm.high8 = W;
        rm.low8 -= arg2.low8;
        genSub( rm.mid8, arg2.mid8);
        Carry = 1;
       ENTRY:
        arg1 = rl( arg1);
        counter = decsz(counter);
    } while (1);
    if (sign & 0x80)
        goto INVERT;
   EXIT:
    return arg1;
}



fixedU16_8 operator/ _xdivU16_8( fixedU16_8 arg1, fixedU16_8 arg2)
{
    fixedU16_8 rm = 0;
    char counter = sizeof(arg1)*8+8+1;
    char c2 = sizeof(arg1)*8 + 1;
    goto ENTRY;
    do  {
        c2 = decsz(c2);
        btsc(c2.7);
        Carry = 0;
        rm = rl( rm);
        if (Carry)
            goto SUBTRACT;
        W = rm.low8 - arg2.low8;
        genSubW( rm.mid8, arg2.mid8);
        genSubW( rm.high8, arg2.high8);
        if (!Carry)
            goto ENTRY;
       SUBTRACT:
        rm.low8 -= arg2.low8;
        genSub( rm.mid8, arg2.mid8);
        genSub( rm.high8, arg2.high8);
        Carry = 1;
       ENTRY:
        arg1 = rl( arg1);
        counter = decsz(counter);
    } while (1);
    return arg1;
}




fixed8_16 operator* _xmul8_16( fixed8_16 arg1, fixed8_16 arg2)
{
    fixed8_16 rval;
    char sign = arg1.high8 ^ arg2.high8;
    if (arg1 < 0)
        arg1 = -arg1;
    if (arg2 < 0)
        arg2 = -arg2;

   #ifdef hw_mult8x8

    uns8 tmpL;

    hw_mult8x8( arg1.low8, arg2.low8);   // p1
    tmpL = hiRES;
    rval = 0;

    hw_mult8x8( arg1.mid8, arg2.low8);  // p2
    tmpL += loRES;
    genAdd( rval.low8, hiRES);
    genAdd( rval.mid8, 0);

    hw_mult8x8( arg1.low8, arg2.mid8);  // p2
    tmpL += loRES;
    genAdd( rval.low8, hiRES);
    genAdd( rval.mid8, 0);

    hw_mult8x8( arg1.high8, arg2.low8);  // p3
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.mid8, arg2.mid8);  // p3
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.low8, arg2.high8);  // p3
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.high8, arg2.mid8);  // p4
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.mid8, arg2.high8);  // p4
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.high8, arg2.high8);  // p5
    rval.high8 += loRES;

   #else

    char counter = sizeof(arg2)*8;
    uns8 rvalH = 0;
    rval.high16 = 0;

    do  {
        arg2 = rr( arg2);
        if (Carry)  {
            rval.mid8 += arg1.low8;
            genAdd( rval.high8, arg1.mid8);
            genAdd( rvalH, arg1.high8);
        }
        rvalH = rr( rvalH);
        rval = rr( rval);
        counter = decsz(counter);
    } while (1);

   #endif

    if (sign & 0x80)
        rval = -rval;
    return rval;
}


fixedU8_16 operator* _xmulU8_16( fixedU8_16 arg1, fixedU8_16 arg2)
{
    fixedU8_16 rval;

   #ifdef hw_mult8x8

    uns8 tmpL;

    hw_mult8x8( arg1.low8, arg2.low8);   // p1
    tmpL = hiRES;
    rval = 0;

    hw_mult8x8( arg1.mid8, arg2.low8);  // p2
    tmpL += loRES;
    genAdd( rval.low8, hiRES);
    genAdd( rval.mid8, 0);

    hw_mult8x8( arg1.low8, arg2.mid8);  // p2
    tmpL += loRES;
    genAdd( rval.low8, hiRES);
    genAdd( rval.mid8, 0);

    hw_mult8x8( arg1.high8, arg2.low8);  // p3
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.mid8, arg2.mid8);  // p3
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.low8, arg2.high8);  // p3
    rval.low8 += loRES;
    genAdd( rval.mid8, hiRES);
    genAdd( rval.high8, 0);

    hw_mult8x8( arg1.high8, arg2.mid8);  // p4
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.mid8, arg2.high8);  // p4
    rval.mid8 += loRES;
    genAdd( rval.high8, hiRES);

    hw_mult8x8( arg1.high8, arg2.high8);  // p5
    rval.high8 += loRES;

   #else

    char counter = sizeof(arg2)*8;
    uns8 rvalH = 0;
    rval.high16 = 0;
    do  {
        arg2 = rr( arg2);
        if (Carry)  {
            rval.mid8 += arg1.low8;
            genAdd( rval.high8, arg1.mid8);
            genAdd( rvalH, arg1.high8);
        }
        rvalH = rr( rvalH);
        rval = rr( rval);
        counter = decsz(counter);
    } while (1);

   #endif

    return rval;
}


fixed8_16 operator/ _xdiv8_16( fixed8_16 arg1, fixed8_16 arg2)
{
    fixedU8_16 rm = 0;
    char counter = sizeof(arg1)*8+16+1;
    char c2 = sizeof(arg1)*8 + 1;
    char sign = arg1.high8 ^ arg2.high8;
    if (arg1 < 0)  {
       INVERT:
        arg1 = -arg1;
        if (c2 & 0x80)
            goto EXIT;
    }
    if (arg2 < 0)
        arg2 = -arg2;
    goto ENTRY;
    do  {
        c2 = decsz(c2);
        btsc(c2.7);
        Carry = 0;
        rm = rl( rm);
        W = rm.low8 - arg2.low8;
        genSubW( rm.mid8, arg2.mid8);
        genSubW( rm.high8, arg2.high8);
        if (!Carry)
            goto ENTRY;
        rm.high8 = W;
        rm.low8 -= arg2.low8;
        genSub( rm.mid8, arg2.mid8);
        Carry = 1;
       ENTRY:
        arg1 = rl( arg1);
        counter = decsz(counter);
    } while (1);
    if (sign & 0x80)
        goto INVERT;
   EXIT:
    return arg1;
}



fixedU8_16 operator/ _xdivU8_16( fixedU8_16 arg1, fixedU8_16 arg2)
{
    fixedU8_16 rm = 0;
    char counter = sizeof(arg1)*8+16+1;
    char c2 = sizeof(arg1)*8 + 1;
    goto ENTRY;
    do  {
        c2 = decsz(c2);
        btsc(c2.7);
        Carry = 0;
        rm = rl( rm);
        if (Carry)
            goto SUBTRACT;
        W = rm.low8 - arg2.low8;
        genSubW( rm.mid8, arg2.mid8);
        genSubW( rm.high8, arg2.high8);
        if (!Carry)
            goto ENTRY;
       SUBTRACT:
        rm.low8 -= arg2.low8;
        genSub( rm.mid8, arg2.mid8);
        genSub( rm.high8, arg2.high8);
        Carry = 1;
       ENTRY:
        arg1 = rl( arg1);
        counter = decsz(counter);
    } while (1);
    return arg1;
}

#ifdef hw_mult8x8
 #undef hw_mult8x8
 #undef loRES
 #undef hiRES
#endif

#undef genAdd
#undef genSub
#undef genAddW
#undef genSubW

#pragma library 0

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线国产电影不卡| 欧美在线观看一二区| 视频一区欧美精品| 亚洲国产精品一区二区久久| 亚洲精品国产第一综合99久久| 日韩美女视频19| 一区二区免费看| 亚洲va欧美va天堂v国产综合| 五月天视频一区| 国产专区欧美精品| 成人精品鲁一区一区二区| 成人av午夜影院| 色综合天天综合给合国产| 欧美性一二三区| 欧美久久久久久久久| 欧美电视剧在线观看完整版| 国产亚洲一区字幕| 成人免费一区二区三区视频| 亚洲精品免费播放| 日本中文在线一区| 国产乱码一区二区三区| 91香蕉视频污| 日韩欧美一区在线| 国产精品丝袜在线| 亚洲国产精品一区二区www在线| 美女尤物国产一区| 99久久精品免费精品国产| 欧美中文字幕一区二区三区亚洲| 7777精品久久久大香线蕉| 久久综合九色欧美综合狠狠| 亚洲美女区一区| 经典三级一区二区| 在线看国产一区| 久久久久久麻豆| 亚洲1区2区3区视频| 懂色av一区二区在线播放| 欧美在线观看一区| 中文字幕不卡在线观看| 亚洲成a天堂v人片| 99久久精品国产一区| 日韩三级电影网址| 亚洲精品国产第一综合99久久| 久久99久久精品| 日本精品视频一区二区| 日本一区二区三区电影| 丝袜脚交一区二区| 91电影在线观看| 国产无一区二区| 久久精品国产999大香线蕉| 99re视频精品| 国产精品素人视频| 韩国欧美国产一区| 日韩一区二区三区观看| 亚洲影院免费观看| 色哟哟在线观看一区二区三区| 久久久99精品免费观看| 蜜桃精品在线观看| 91麻豆精品国产91久久久使用方法 | 欧美日韩在线精品一区二区三区激情| 国产亚洲综合在线| 国产真实精品久久二三区| 91精品婷婷国产综合久久竹菊| 亚洲精品亚洲人成人网| 国产精品99久久久久久久女警 | 欧美精品一区二区三区在线| 亚洲18影院在线观看| 91久久国产最好的精华液| 国产精品麻豆视频| 北岛玲一区二区三区四区| 欧美经典一区二区| 成a人片国产精品| 国产精品三级在线观看| 99热在这里有精品免费| 国产精品热久久久久夜色精品三区 | 黄色成人免费在线| 日韩欧美国产成人一区二区| 青青草91视频| 精品久久久久久无| 免费观看久久久4p| 精品福利av导航| 国产一区二区成人久久免费影院| 精品盗摄一区二区三区| 国产一区二三区| 中文字幕在线观看不卡| 91在线视频免费91| 午夜视频一区在线观看| 欧美一区二区三区视频在线 | 欧美在线你懂的| 亚洲电影在线免费观看| 91麻豆精品国产无毒不卡在线观看 | 国产清纯白嫩初高生在线观看91 | 亚洲国产精品成人综合| 91色九色蝌蚪| 青青国产91久久久久久| 精品va天堂亚洲国产| 福利一区福利二区| 亚洲综合999| 日韩精品一区二区三区三区免费| 国产成人综合亚洲网站| 亚洲欧美二区三区| 日韩欧美国产电影| eeuss影院一区二区三区| 午夜精品一区二区三区电影天堂 | 亚洲视频在线一区| 欧美精品在线一区二区三区| 国产高清精品在线| 亚洲成人动漫在线观看| 久久―日本道色综合久久| 91传媒视频在线播放| 韩国成人福利片在线播放| 亚洲美女视频一区| 26uuu亚洲婷婷狠狠天堂| 91免费版在线| 国产老妇另类xxxxx| 亚洲国产一区二区三区 | 一本色道久久综合亚洲精品按摩| 蜜桃av噜噜一区二区三区小说| 国产日韩精品一区| 欧美丰满一区二区免费视频| 成人动漫一区二区在线| 日韩电影免费一区| 一区二区三区精品视频| 国产欧美一区二区精品秋霞影院| 欧美日本韩国一区二区三区视频 | 国产剧情一区在线| 天天亚洲美女在线视频| 亚洲欧美中日韩| 久久久精品一品道一区| 91精品国产91热久久久做人人| 91视视频在线观看入口直接观看www | 91久久香蕉国产日韩欧美9色| 久热成人在线视频| 亚洲成av人**亚洲成av**| 亚洲欧洲美洲综合色网| 久久精品夜色噜噜亚洲a∨| 日韩一级欧美一级| 欧美精品粉嫩高潮一区二区| 欧美在线一区二区三区| 99精品桃花视频在线观看| 国产98色在线|日韩| 国产激情一区二区三区| 精品一区二区三区免费播放| 日韩不卡在线观看日韩不卡视频| 亚洲一线二线三线视频| 亚洲激情一二三区| 一区二区三区中文在线| 一区二区三区色| 一区二区三区在线视频观看| 一区二区三区在线影院| 一区二区三区四区激情| 亚洲一区二区在线免费看| 亚洲精品高清在线| 一区二区不卡在线播放| 一区二区三区**美女毛片| 亚洲国产综合在线| 日韩成人精品视频| 老司机精品视频在线| 国产精品亚洲成人| 成人高清在线视频| 91国偷自产一区二区使用方法| 91久久精品一区二区| 欧美美女激情18p| 日韩一级高清毛片| 久久久久久久久久久黄色| 国产欧美一区二区精品仙草咪| 国产精品久久久久aaaa| 亚洲欧美影音先锋| 午夜精品aaa| 国产资源在线一区| 99久久国产综合精品麻豆| 日本韩国欧美一区| 日韩视频在线永久播放| 国产欧美一区二区精品秋霞影院| 中文字幕一区二区三区av| 亚洲高清中文字幕| 国产中文字幕精品| 色国产综合视频| 日韩欧美在线综合网| 国产精品二区一区二区aⅴ污介绍| 亚洲视频免费在线观看| 日本不卡一区二区| 成人av电影在线观看| 6080日韩午夜伦伦午夜伦| 国产欧美日产一区| 五月激情综合网| 国产成人精品亚洲午夜麻豆| 在线中文字幕一区二区| 欧美xxxxxxxx| 亚洲自拍另类综合| 国产精品99久| 欧美精品一卡两卡| 日韩一区中文字幕| 韩国精品免费视频| 欧美三级在线播放| 国产精品色噜噜| 久久福利资源站| 欧美人成免费网站| 亚洲欧美日韩人成在线播放| 久久99精品视频| 欧美三区在线视频|