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

📄 optimize.c

📁 CC386 is a general-purpose 32-bit C compiler. It is not an optimizing compiler but given that the co
💻 C
📖 第 1 页 / 共 5 页
字号:
                break;
            case 15:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.i ;
                ep->v.c.i = ep2->v.f ;
                break;
            case 16:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep2->v.c.r ;
                ep->v.c.i = ep1->v.f + ep2->v.c.i;
                break;
            case 17:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r ;
                ep->v.c.i = ep2->v.f + ep1->v.c.i;
                break;
            case 18:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.f + ep2->v.c.r ;
                ep->v.c.i = ep2->v.c.i;
                break;
            case 19:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep2->v.f + ep1->v.c.r ;
                ep->v.c.i = ep1->v.c.i;
                break;
            case 20:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r + ep2->v.c.r;
                ep->v.c.i = ep1->v.c.i + ep2->v.c.i;
                break;
            case 23:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r + ep2->v.i;
                ep->v.c.i = ep1->v.c.i ;
                break;
            case 24:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep2->v.c.r + ep1->v.i;
                ep->v.c.i = ep2->v.c.i ;
                break;
            }
            break;
        case en_sub:
            switch (mode)
            {
            case 1:
                ep->nodetype = maxinttype(ep1, ep2);
                ep->v.i = ep1->v.i - ep2->v.i;
                ep->v.i = reint(ep);
                break;
            case 2:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = ep1->v.i - ep2->v.f;
                break;
            case 3:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = ep1->v.f - ep2->v.i;
                break;
            case 4:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = ep1->v.f - ep2->v.f;
                break;
            case 9:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.f ;
                ep->v.c.i = -ep2->v.f;
                break ;
            case 10:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = -ep2->v.f ;
                ep->v.c.i = ep1->v.f;
                break ;
            case 11:
                ep->nodetype = maximaginarytype(ep1,ep2);
                ep->v.f = ep1->v.f - ep2->v.f;
                break ;
            case 14:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = -ep2->v.i ;
                ep->v.c.i = ep1->v.f ;
                break;
            case 15:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.i ;
                ep->v.c.i = -ep2->v.f ;
                break;
            case 16:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = -ep2->v.c.r ;
                ep->v.c.i = ep1->v.f - ep2->v.c.i;
                break;
            case 17:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r ;
                ep->v.c.i = -ep2->v.f + ep1->v.c.i;
                break;
            case 18:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.f - ep2->v.c.r ;
                ep->v.c.i = -ep2->v.c.i;
                break;
            case 19:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = -ep2->v.f + ep1->v.c.r ;
                ep->v.c.i = ep1->v.c.i;
                break;
            case 20:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r - ep2->v.c.r;
                ep->v.c.i = ep1->v.c.i - ep2->v.c.i;
                break;
            case 23:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r - ep2->v.i;
                ep->v.c.i = ep1->v.c.i ;
                break;
            case 24:
                ep->nodetype = maxcomplextype(ep1,ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = -ep2->v.c.r + ep1->v.i;
                ep->v.c.i = -ep2->v.c.i ;
                break;
            }
            break;
        case en_pmul:
        case en_umul:
        case en_mul:
		case en_arrayindex:
            switch (mode)
            {
            case 1:
                ep->nodetype = maxinttype(ep1, ep2);
                ep->v.i = ep1->v.i *ep2->v.i;
                ep->v.i = reint(ep);
                break;
            case 2:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = ep1->v.i *ep2->v.f;
                break;
            case 3:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = ep1->v.f *ep2->v.i;
                break;
            case 4:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = ep1->v.f *ep2->v.f;
                break;
            case 9:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = ep1->v.f * ep2->v.f;
                break;
            case 10:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = ep1->v.f * ep2->v.f;
                break;
            case 11:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = -ep1->v.f * ep2->v.f;
                break;
            case 14:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = ep1->v.f * ep2->v.i;
                break;
            case 15:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = ep1->v.i * ep2->v.f;
                break;
            case 16:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = -ep1->v.f * ep2->v.c.i;
                ep->v.c.i = ep1->v.f * ep2->v.c.r;
                break;
            case 17:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = -ep2->v.f * ep1->v.c.i;
                ep->v.c.i = ep2->v.f * ep1->v.c.r;
                break;
            case 18:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.f * ep2->v.c.r;
                ep->v.c.i = ep1->v.f * ep2->v.c.i;
                break;
            case 19:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep2->v.f * ep1->v.c.r;
                ep->v.c.i = ep2->v.f * ep1->v.c.i;
                break;
            case 13:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep2->v.f * ep1->v.c.r;
                ep->v.c.i = ep2->v.f * ep1->v.c.i;
                break;
            case 24:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.i * ep2->v.c.r;
                ep->v.c.i = ep1->v.i * ep2->v.c.i;
                break;
            }
            break;
        case en_pdiv:
        case en_div:
        case en_udiv:
            switch (mode)
            {
            case 1:
                ep->nodetype = maxinttype(ep1, ep2);
                if (isunsigned(ep1) || isunsigned(ep2))
                    ep->v.i = (ULLONG_TYPE)ep1->v.i / (ULLONG_TYPE)ep2->v.i;
                else
                    ep->v.i = ep1->v.i / ep2->v.i;
                ep->v.i = reint(ep);
                break;
            case 2:
                ep->nodetype = maxfloattype(ep1, ep2);
                if (isunsigned(ep1))
                    ep->v.f = (ULLONG_TYPE)ep1->v.i / ep2->v.f;
                else
                    ep->v.f = ep1->v.i / ep2->v.f;
                break;
            case 3:
                ep->nodetype = maxfloattype(ep1, ep2);
                if (isunsigned(ep2))
                    ep->v.f = ep1->v.f / (ULLONG_TYPE)ep2->v.i;
                else
                    ep->v.f = ep1->v.f / ep2->v.i;
                break;
            case 4:
                ep->nodetype = maxfloattype(ep1, ep2);
                ep->v.f = ep1->v.f / ep2->v.f;
                break;
            case 9:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = -ep1->v.f / ep2->v.f;
                break;
            case 10:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = ep1->v.f / ep2->v.f;
                break;
            case 11:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = ep1->v.f / ep2->v.f;
                break;
            case 14:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = ep1->v.f / ep2->v.i;
                break;
            case 15:
                ep->nodetype = maximaginarytype(ep1, ep2);
                ep->v.f = -ep1->v.i / ep2->v.f;
                break;
            case 17:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.i / ep2->v.f;
                ep->v.c.i = - ep1->v.c.r / ep2->v.f;
                break;
            case 19:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r / ep2->v.f;
                ep->v.c.i = ep1->v.c.i / ep2->v.f;
                break;
            case 23:
                ep->nodetype = maxcomplextype(ep1, ep2);
                ep->cflags |= ((ep1->cflags &STD_PRAGMA_CXLIMITED)
                    && (ep2->cflags & STD_PRAGMA_CXLIMITED)) ?
                        DF_CXLIMITED : 0;
                ep->v.c.r = ep1->v.c.r / ep2->v.i;
                ep->v.c.i = ep1->v.c.i / ep2->v.i;
                break;
            }
            break;
        case en_mod:
            ep->nodetype = maxinttype(ep1, ep2);

            if (isunsigned(ep1) || isunsigned(ep2))
                ep->v.i = (ULLONG_TYPE)ep1->v.i % (ULLONG_TYPE)ep2->v.i;
            else
                ep->v.i = ep1->v.i % ep2->v.i;
            ep->v.i = reint(ep);
            break;
        case en_lsh:
        case en_alsh:
            ep->nodetype = ep1->nodetype; // maxinttype(ep1, ep2);
            ep->v.i = ep1->v.i << ep2->v.i;
            ep->v.i = reint(ep);
            break;
        case en_rsh:
            ep->nodetype = ep1->nodetype; // maxinttype(ep1, ep2);
            ep->v.i = reint(ep);
            ep->v.i = ((ULLONG_TYPE)ep1->v.i) >> ep2->v.i;
            ep->v.i = reint(ep);
            break;
        case en_arsh:
        case en_arshd:
            ep->nodetype = ep1->nodetype; // maxinttype(ep1, ep2);
            ep->v.i = ep1->v.i >> ep2->v.i;
            ep->v.i = reint(ep);

⌨️ 快捷键说明

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