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

📄 iconst.c

📁 CC386 is a general-purpose 32-bit C compiler. It is not an optimizing compiler but given that the co
💻 C
📖 第 1 页 / 共 3 页
字号:
                else
                    ReassignCompare(d,left->f < right->f);
                break;
            }		
            break;
		case i_setbe:
		case i_jbe:
            index = xgetmode(d, &left, &right);
            switch(index)
            {
            case icll:
                ReassignCompare(d,(unsigned LLONG_TYPE)left->i <= (unsigned LLONG_TYPE)right->i);
                break;
            case iclr:
                ReassignCompare(d,(unsigned LLONG_TYPE)left->i <= right->f);
                break;
            case icrl:
                ReassignCompare(d,left->f <= (unsigned LLONG_TYPE)right->i);
                break;
            case icrr:
                ReassignCompare(d,left->f <= right->f);
                break;
            }		
            break;
		case i_seta:
		case i_ja:
            index = xgetmode(d, &left, &right);
            switch(index)
            {
            case icll:
                ReassignCompare(d,(unsigned LLONG_TYPE)left->i > (unsigned LLONG_TYPE)right->i);
                break;
            case iclr:
                ReassignCompare(d,(unsigned LLONG_TYPE)left->i > right->f);
                break;
            case icrl:
                ReassignCompare(d,left->f > (unsigned LLONG_TYPE)right->i);
                break;
            case icrr:
                ReassignCompare(d,left->f > right->f);
                break;
            }		
            break;
		case i_setnc:
		case i_jnc:
            index = xgetmode(d, &left, &right);
            switch(index)
            {
            case icll:
                ReassignCompare(d,(unsigned LLONG_TYPE)left->i >= (unsigned LLONG_TYPE)right->i);
                break;
            case iclr:
                ReassignCompare(d,(unsigned LLONG_TYPE)left->i >= right->f);
                break;
            case icrl:
                ReassignCompare(d,left->f >= (unsigned LLONG_TYPE)right->i);
                break;
            case icrr:
                ReassignCompare(d,left->f >= right->f);
                break;
            }		
            break;
		case i_setl:
		case i_jl:
            index = xgetmode(d, &left, &right);
            switch(index)
            {
            case icll:
                ReassignCompare(d,left->i < right->i);
                break;
            case iclr:
                ReassignCompare(d,left->i < right->f);
                break;
            case icrl:
                ReassignCompare(d,left->f < right->i);
                break;
            case icrr:
                ReassignCompare(d,left->f < right->f);
                break;
            }		
            break;
		case i_setle:
		case i_jle:
            index = xgetmode(d, &left, &right);
            switch(index)
            {
            case icll:
                ReassignCompare(d,left->i <= right->i);
                break;
            case iclr:
                ReassignCompare(d,left->i <= right->f);
                break;
            case icrl:
                ReassignCompare(d,left->f <= right->i);
                break;
            case icrr:
                ReassignCompare(d,left->f <= right->f);
                break;
            }		
            break;
		case i_setg:
		case i_jg:
            index = xgetmode(d, &left, &right);
            switch(index)
            {
            case icll:
                ReassignCompare(d,left->i > right->i);
                break;
            case iclr:
                ReassignCompare(d,left->i > right->f);
                break;
            case icrl:
                ReassignCompare(d,left->f > right->i);
                break;
            case icrr:
                ReassignCompare(d,left->f > right->f);
                break;
            }		
            break;
		case i_setge:
		case i_jge:
            index = xgetmode(d, &left, &right);
            switch(index)
            {
            case icll:
                ReassignCompare(d,left->i >= right->i);
                break;
            case iclr:
                ReassignCompare(d,left->i >= right->f);
                break;
            case icrl:
                ReassignCompare(d,left->f >= right->i);
                break;
            case icrr:
                ReassignCompare(d,left->f >= right->f);
                break;
            }		
            break;
#ifdef XXXXX
        case i_add:
            index = xgetmode(d, &left, &right);
            switch (index)
            {
            case icll:
                ReassignInt(d,left->i + right->i);
                break;
            case iclr:
                ReassignFloat(d,left->i + right->f);
                break;
            case icrl:
                ReassignFloat(d,left->f + right->i);
                break;
            case icrr:
                ReassignFloat(d,left->f + right->f);
                break;
            case icln:
                if (left->i == 0)
                {
					ASNFromRight(d);
                }
                break;
            case icrn:
                if (left->f == 0)
                {
					ASNFromRight(d);
                }
                break;
            case icnl:
                if (right->i == 0)
                {
					ASNFromLeft(d);
                }
                break;
            case icnr:
                if (right->f == 0)
                {
					ASNFromLeft(d);
                }
                break;
            }
            break;
        case i_sub:
            index = xgetmode(d, &left, &right);
            switch (index)
            {
            case icnone:
                if (d->dc.left == d->dc.right)
                {
					ReassignInt(d,0);
                }
                break;
            case icll:
				ReassignInt(d,left->i - right->i);
                break;
            case iclr:
				ReassignFloat(d,left->i - right->f);
                break;
            case icrl:
				ReassignFloat(d,left->f - right->i);
                break;
            case icrr:
				ReassignFloat(d,left->f - right->f);
                break;
            case icln:
                if (left->i == 0)
                {
					ASNFromLeft(d);
                }
                break;
            case icrn:
                if (left->f == 0)
                {
                }
                break;
            case icnl:
                if (right->i == 0)
                {
                }
                break;
            case icnr:
                if (right->f == 0)
                {
                }
                break;
            }
            break;
        case i_udiv:
            index = xgetmode(d, &left, &right);
            switch (index)
            {
            case icll:
                if ((unsigned LLONG_TYPE)right->i != 0)
					ReassignInt(d,(unsigned LLONG_TYPE)left->i / (unsigned LLONG_TYPE)right->i);
                else
                    d->dc.v.i = 0;
                break;
            case iclr:
                if (right->f != 0)
					ReassignFloat(d,(unsigned LLONG_TYPE)left->i / right->f);
                else
                    d->dc.v.f = 0;
                break;
            case icrl:
                if ((unsigned LLONG_TYPE)right->i != 0)
					ReassignFloat(d,left->f / (unsigned LLONG_TYPE)right->i);
                else
                    d->dc.v.f = 0;
                break;
            case icrr:
                if (right->f != 0)
					ReassignFloat(d,left->f / right->f);
                else
                    d->dc.v.f = 0;
                break;
            case icln:
                if ((unsigned LLONG_TYPE)left->i == 0)
                {
					ReassignInt(d,0);
                }
                break;
            case icrn:
                if (left->f == 0)
                {
					ReassignFloat(d,0);
                }
                break;
            case icnl:
                if ((unsigned LLONG_TYPE)right->i == 1)
                {
					ASNFromLeft(d);
                }
                else if ((shift = pwrof2((unsigned LLONG_TYPE)right->i)) !=  - 1)
                {
					ReassignMulDiv(d,i_lsr,shift,FALSE);
                }
                break;
            case icnr:
                if (right->f == 1)
                {
					ASNFromLeft(d);
                }
                break;
            }
            break;
        case i_umod:
            index = xgetmode(d, &left, &right);
            switch (index)
            {
            case icnone:
                break;
            case icll:
                if ((unsigned LLONG_TYPE)right->i != 0)
					ReassignInt(d,(unsigned LLONG_TYPE)left->i % (unsigned LLONG_TYPE)right->i);
                else
                    d->dc.v.i = 0;
            case icnl:
                if (shift = calmask((unsigned LLONG_TYPE)right->i))
                {
					ReassignMulDiv(d,i_and,shift,FALSE);
                }
                break;
            default:
                badconst();
                break;
            }
            break;
        case i_sdiv:
            index = xgetmode(d, &left, &right);
            switch (index)
            {
            case icll:
                if (right->i != 0)
					ReassignInt(d,left->i / right->i);
                else
                    d->dc.v.i = 0;
                break;
            case iclr:
                if (right->f != 0)
					ReassignFloat(d,left->i / right->f);
                else
                    d->dc.v.f = 0;
                break;
            case icrl:
                if (right->i != 0)
					ReassignFloat(d,left->f / right->i);
                else
                    d->dc.v.f = 0;
                break;
            case icrr:
                if (right->f != 0)
					ReassignFloat(d,left->f / right->f);
                else
                    d->dc.v.f = 0;
                break;
            case icln:
                if (left->i == 0)
                {
					ReassignInt(d,0);
                }
                break;
            case icrn:
                if (left->f == 0)
                {
					ReassignFloat(d,0);
                }
                break;
            case icnl:
                if (right->i == 1)
                {
					ASNFromLeft(d);
                }
                else if ((shift = pwrof2(right->i)) !=  - 1)
                {
					ReassignMulDiv(d,i_lsr,shift,FALSE);
                }
                break;
            case icnr:
                if (right->f == 1)
                {
					ASNFromLeft(d);
                }
                break;
            }
            break;
        case i_smod:
            index = xgetmode(d, &left, &right);
            switch (index)
            {
            case icnone:
                break;
            case icll:
                if (right->i != 0)
					ReassignInt(d,left->i % right->i);
                else
                    d->dc.v.i = 0;
                break;
            case icln:
                if (left->i == 0)

⌨️ 快捷键说明

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