⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_op.h

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 H
📖 第 1 页 / 共 5 页
字号:
 |                                                                           | |   Function Name : L_sub                                                   | |                                                                           | |   Purpose :                                                               | |                                                                           | |   32 bits subtraction of the two 32 bits variables (L_var1-L_var2) with   | |   overflow control and saturation; the result is set at +2147483647 when  | |   overflow occurs or at -2147483648 when underflow occurs.                | |                                                                           | |   Complexity weight : 2                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    L_var1   32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var3 <= 0x7fff ffff.                 | |                                                                           | |    L_var2   32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var3 <= 0x7fff ffff.                 | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    L_var_out                                                              | |             32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var_out <= 0x7fff ffff.              | |___________________________________________________________________________|*/static inline Word32 L_sub (Word32 L_var1, Word32 L_var2){    Word32 L_var_out;    L_var_out = L_var1 - L_var2;    if (((L_var1 ^ L_var2) & MIN_32) != 0)    {        if ((L_var_out ^ L_var1) & MIN_32)        {            L_var_out = (L_var1 < 0L) ? MIN_32 : MAX_32;            Overflow = 1;        }    }#if (WMOPS)    multiCounter[currCounter].L_sub++;#endif    return (L_var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : L_add_c                                                 | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Performs 32 bits addition of the two 32 bits variables (L_var1+L_var2+C)| |   with carry. No saturation. Generate carry and Overflow values. The car- | |   ry and overflow values are binary variables which can be tested and as- | |   signed values.                                                          | |                                                                           | |   Complexity weight : 2                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    L_var1   32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var3 <= 0x7fff ffff.                 | |                                                                           | |    L_var2   32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var3 <= 0x7fff ffff.                 | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    L_var_out                                                              | |             32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var_out <= 0x7fff ffff.              | |                                                                           | |   Caution :                                                               | |                                                                           | |    In some cases the Carry flag has to be cleared or set before using     | |    operators which take into account its value.                           | |___________________________________________________________________________|*/static inline Word32 L_add_c (Word32 L_var1, Word32 L_var2){    Word32 L_var_out;    Word32 L_test;    Flag carry_int = 0;    L_var_out = L_var1 + L_var2 + Carry;    L_test = L_var1 + L_var2;    if ((L_var1 > 0) && (L_var2 > 0) && (L_test < 0))    {        Overflow = 1;        carry_int = 0;    }    else    {        if ((L_var1 < 0) && (L_var2 < 0))        {            if (L_test >= 0)	    {                Overflow = 1;                carry_int = 1;	    }            else	    {                Overflow = 0;                carry_int = 1;	    }        }        else        {            if (((L_var1 ^ L_var2) < 0) && (L_test >= 0))            {                Overflow = 0;                carry_int = 1;            }            else            {                Overflow = 0;                carry_int = 0;            }        }    }    if (Carry)    {        if (L_test == MAX_32)        {            Overflow = 1;            Carry = carry_int;        }        else        {            if (L_test == (Word32) 0xFFFFFFFFL)            {                Carry = 1;            }            else            {                Carry = carry_int;            }        }    }    else    {        Carry = carry_int;    }#if (WMOPS)    multiCounter[currCounter].L_add_c++;#endif    return (L_var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : L_sub_c                                                 | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Performs 32 bits subtraction of the two 32 bits variables with carry    | |   (borrow) : L_var1-L_var2-C. No saturation. Generate carry and Overflow  | |   values. The carry and overflow values are binary variables which can    | |   be tested and assigned values.                                          | |                                                                           | |   Complexity weight : 2                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    L_var1   32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var3 <= 0x7fff ffff.                 | |                                                                           | |    L_var2   32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var3 <= 0x7fff ffff.                 | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    L_var_out                                                              | |             32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var_out <= 0x7fff ffff.              | |                                                                           | |   Caution :                                                               | |                                                                           | |    In some cases the Carry flag has to be cleared or set before using     | |    operators which take into account its value.                           | |___________________________________________________________________________|*/static inline Word32 L_sub_c (Word32 L_var1, Word32 L_var2){    Word32 L_var_out;    Word32 L_test;    Flag carry_int = 0;    if (Carry)    {        Carry = 0;        if (L_var2 != MIN_32)        {            L_var_out = L_add_c (L_var1, -L_var2);#if (WMOPS)            multiCounter[currCounter].L_add_c--;#endif        }        else        {            L_var_out = L_var1 - L_var2;            if (L_var1 > 0L)            {                Overflow = 1;                Carry = 0;            }        }    }    else    {        L_var_out = L_var1 - L_var2 - (Word32) 0X00000001L;        L_test = L_var1 - L_var2;        if ((L_test < 0) && (L_var1 > 0) && (L_var2 < 0))        {            Overflow = 1;            carry_int = 0;        }        else if ((L_test > 0) && (L_var1 < 0) && (L_var2 > 0))        {            Overflow = 1;            carry_int = 1;        }        else if ((L_test > 0) && ((L_var1 ^ L_var2) > 0))        {            Overflow = 0;            carry_int = 1;        }        if (L_test == MIN_32)        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -