亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品1区2区3区在线观看| 91污片在线观看| 91一区二区在线| 日韩欧美国产综合在线一区二区三区| 亚洲国产精品99久久久久久久久| 日韩影院免费视频| 99精品久久99久久久久| 欧美www视频| 日本三级韩国三级欧美三级| 色综合久久综合| 国产精品美女一区二区在线观看| 热久久国产精品| 欧美日韩一级视频| 亚洲精品乱码久久久久久久久 | 国产精品久久久久久久久免费丝袜| 亚洲狠狠爱一区二区三区| www.亚洲精品| 国产亚洲欧美日韩俺去了| 免费成人在线播放| 8x8x8国产精品| 午夜精品aaa| 欧美一区在线视频| 日韩成人免费看| 欧美美女一区二区在线观看| 亚洲一区二区三区四区在线观看 | 午夜伦理一区二区| 色丁香久综合在线久综合在线观看| 亚洲国产岛国毛片在线| 国产成人免费9x9x人网站视频| 久久亚洲综合av| 国产精品主播直播| 欧美极品aⅴ影院| 大桥未久av一区二区三区中文| 国产欧美一二三区| 成人污视频在线观看| 国产精品美女久久久久高潮| 成人午夜在线视频| 亚洲美女偷拍久久| 欧美做爰猛烈大尺度电影无法无天| 亚洲免费观看在线视频| 色94色欧美sute亚洲13| 亚洲国产视频在线| 欧美放荡的少妇| 久久99热这里只有精品| 欧美精品一区二区三区蜜桃视频| 韩国一区二区在线观看| 精品国产凹凸成av人网站| 国产激情一区二区三区桃花岛亚洲| 久久精品在这里| 99re成人精品视频| 亚洲国产精品久久久久秋霞影院| 日韩一区二区免费视频| 激情综合色播五月| 国产精品国产三级国产a| 91在线码无精品| 亚洲图片自拍偷拍| 26uuu亚洲| 色综合久久中文字幕| 丝袜脚交一区二区| 中文在线资源观看网站视频免费不卡| 99riav久久精品riav| 日韩电影在线免费| 亚洲国产精品99久久久久久久久| 日本道免费精品一区二区三区| 免费观看一级欧美片| 久久久久久久久久久久电影| 99九九99九九九视频精品| 日韩一区欧美二区| 中文字幕一区二区三区在线不卡| 欧美精品九九99久久| 国产a视频精品免费观看| 亚洲一区电影777| 久久久久久亚洲综合| 欧美色区777第一页| 国产大陆精品国产| 日本亚洲免费观看| 亚洲婷婷国产精品电影人久久| 日韩欧美色综合网站| 色综合一个色综合亚洲| 国产精品原创巨作av| 视频一区在线播放| 亚洲人成人一区二区在线观看| 日韩一区二区三免费高清| 一本色道久久综合亚洲aⅴ蜜桃| 久久国产精品色婷婷| 亚洲成人一二三| 亚洲男女毛片无遮挡| 久久综合网色—综合色88| 欧美视频一区二区三区四区| 大胆欧美人体老妇| 国产精品综合在线视频| 亚洲午夜羞羞片| 亚洲视频一二三| 国产视频一区二区三区在线观看| 日韩无一区二区| 欧美日韩国产bt| 在线视频国内一区二区| 成人性生交大片免费看视频在线 | 欧美群妇大交群中文字幕| 成人黄动漫网站免费app| 精东粉嫩av免费一区二区三区| 亚洲成人手机在线| 亚洲尤物在线视频观看| 亚洲日本va午夜在线影院| 国产精品免费aⅴ片在线观看| 欧美mv和日韩mv的网站| 日韩三级电影网址| 欧美一区二区三区小说| 91精品蜜臀在线一区尤物| 欧美视频中文字幕| 欧美写真视频网站| 欧美日韩一级二级| 欧美日韩你懂得| 欧美精品日韩综合在线| 欧美日本一区二区| 日韩一级完整毛片| 欧美哺乳videos| 欧美精品一区二| 国产日韩精品久久久| 中文在线免费一区三区高中清不卡| 国产亚洲一区二区三区| 中文无字幕一区二区三区| 欧美—级在线免费片| |精品福利一区二区三区| 亚洲欧美国产77777| 亚洲一区二区成人在线观看| 五月天激情小说综合| 青青草原综合久久大伊人精品 | 欧美精品在线视频| 538prom精品视频线放| 欧美一级二级在线观看| 精品国产123| 国产精品久久久久久久蜜臀| 亚洲麻豆国产自偷在线| 亚洲成人av资源| 九九视频精品免费| 成av人片一区二区| 欧美日韩一区二区在线观看 | 亚洲国产精品黑人久久久| 综合色中文字幕| 天天色天天爱天天射综合| 老司机精品视频一区二区三区| 成人性生交大合| 欧美老人xxxx18| 国产欧美日韩中文久久| 一区二区免费在线| 狠狠色丁香久久婷婷综| 久久这里只有精品首页| 亚洲三级在线看| 免费成人在线影院| 91美女片黄在线观看91美女| 欧美一区二区在线播放| 国产精品免费视频观看| 秋霞国产午夜精品免费视频 | 狠狠色丁香久久婷婷综合_中| 成人激情小说网站| 欧美一区二区三区成人| 国产精品的网站| 蜜臀av性久久久久av蜜臀妖精| proumb性欧美在线观看| 欧美一级日韩免费不卡| 亚洲欧洲综合另类在线| 国产在线一区二区综合免费视频| 在线亚洲一区观看| 欧美高清在线一区| 久久爱www久久做| 欧美性猛交xxxx乱大交退制版| 国产午夜精品久久久久久免费视 | 狠狠色狠狠色合久久伊人| 在线视频国产一区| 国产精品蜜臀av| 国产精品一品二品| 欧美一区二区三区白人| 亚洲裸体xxx| 亚洲国产乱码最新视频| k8久久久一区二区三区| 久久久不卡网国产精品二区| 午夜国产精品影院在线观看| 国产盗摄一区二区| 久久一区二区视频| 久久99国产精品久久99果冻传媒| 欧美日韩一级二级| 亚洲男人的天堂在线观看| 成人激情av网| 久久久精品免费观看| 精品夜夜嗨av一区二区三区| 欧美精品在线一区二区三区| 一区二区三区不卡视频| caoporm超碰国产精品| 中文字幕欧美日本乱码一线二线| 久久精品久久久精品美女| 欧美麻豆精品久久久久久| 亚洲自拍偷拍网站| 欧美在线观看禁18| 亚洲免费观看在线观看| 91官网在线免费观看| 又紧又大又爽精品一区二区| 99热精品一区二区| 亚洲色图丝袜美腿| 日本黄色一区二区|