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

📄 bytecodes.c

📁 Nucleus_2_kvm_Hello 是kvm移植到Nucleus系统的源代码。。。好东西啊
💻 C
📖 第 1 页 / 共 5 页
字号:
/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(SASTORE)         /* Store into short array */        long value = popStack();        long index = popStack();        SHORTARRAY thisArray = popStackAsType(SHORTARRAY);        CHECKARRAY(thisArray, index);            thisArray->sdata[index] = (short)value;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(POP)             /* Pop top operand stack word */        oneLess;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(POP2)            /* Pop two top operand stack words */        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(DUP)             /* Duplicate top operand stack word */        long temp = topStack;        pushStack(temp);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(DUP_X1)      /* Duplicate top operand stack word and put two down */        long a = topStack;        long b = secondStack;        secondStack = a;        topStack    = b;        pushStack(a);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(DUP_X2)    /* Duplicate top operand stack word and put three down */        long a = topStack;        long b = secondStack;        long c = thirdStack;        thirdStack  = a;        secondStack = c;        topStack    = b;        pushStack(a);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(DUP2)            /* Duplicate top two operand stack words */        long a = topStack;        long b = secondStack;        pushStack(b);        pushStack(a);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(DUP2_X1) /* Duplicate top two operand stack words and put three down */        long a = topStack;        long b = secondStack;        long c = thirdStack;        thirdStack  = b;        secondStack = a;        topStack    = c;        pushStack(b);        pushStack(a);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(DUP2_X2) /* Duplicate top two operand stack words and put four down */        long a = topStack;        long b = secondStack;        long c = thirdStack;        long d = fourthStack;        fourthStack = b;        thirdStack  = a;        secondStack = d;        topStack    = c;        pushStack(b);        pushStack(a);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(SWAP)            /* Swap top two operand stack words */        long a = topStack;        long b = secondStack;        topStack    = b;        secondStack = a;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IADD)                            /* Add integer */        long temp = popStack();        *(long*)sp += temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LADD)                            /* Add long */        long64 lvalue = GET_LONG(sp - 3);        long64 rvalue = GET_LONG(sp - 1);        ll_inc(lvalue, rvalue);        SET_LONG(sp - 3, lvalue);        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FADD)                            /* Add float */        float temp = *(float*)sp--;        *(float*)sp += temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DADD)                            /* Add double */        double rvalue = GET_DOUBLE(sp-1);        double lvalue = GET_DOUBLE(sp-3);        SET_DOUBLE(sp-3, lvalue + rvalue);        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISUB)                            /* Sub integer */        long temp = popStack();        *(long*)sp -= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSUB)                            /* Sub long */        long64 lvalue = GET_LONG(sp - 3);        long64 rvalue = GET_LONG(sp - 1);        ll_dec(lvalue, rvalue);        SET_LONG(sp - 3, lvalue);        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FSUB)                            /* Sub float */        float temp = *(float*)sp--;        *(float*)sp -= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DSUB)                            /* Sub double */        double rvalue = GET_DOUBLE(sp-1);        double lvalue = GET_DOUBLE(sp-3);        SET_DOUBLE(sp-3, lvalue - rvalue);        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IMUL)                            /* Mul integer */        long temp = popStack();        *(long*)sp *= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LMUL)                            /* Mul long */        long64 rvalue = GET_LONG(sp - 1);        long64 lvalue = GET_LONG(sp - 3);        SET_LONG(sp - 3, ll_mul(lvalue, rvalue));        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FMUL)                            /* Mul float */        float temp = *(float*)sp--;        *(float*)sp *= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DMUL)                            /* Mul double */        double rvalue = GET_DOUBLE(sp-1);        double lvalue = GET_DOUBLE(sp-3);        SET_DOUBLE(sp-3,  lvalue * rvalue);        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IDIV)                            /* Div integer */        long rValue = popStack();        long lValue = topStack;        if (rValue == 0) {            goto handleArithmeticException;        } else if (lValue == 0x80000000 && rValue == -1) {            topStack = lValue;        } else {            topStack = lValue / rValue;        }DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LDIV)                            /* Div long */        long64 rvalue = GET_LONG(sp - 1);        long64 lvalue = GET_LONG(sp - 3);        if (ll_zero_eq(rvalue)) {            goto handleArithmeticException;        } else {            SET_LONG(sp - 3, ll_div(lvalue, rvalue));            lessStack(2);        }DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FDIV)                            /* Div float */        float temp = *(float*)sp--;        *(float*)sp /= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DDIV)                            /* Div double */        double rvalue = GET_DOUBLE(sp-1);        double lvalue = GET_DOUBLE(sp-3);        SET_DOUBLE(sp-3,  lvalue / rvalue);        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IREM)                            /* Rem integer */        long rValue = popStack();        long lValue = topStack;        if (rValue == 0) {            goto handleArithmeticException;        } else if (lValue == 0x80000000 && rValue == -1) {            topStack = lValue % 1;        } else {            topStack = lValue % rValue;        }DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LREM)                            /* Rem long */        long64 rvalue = GET_LONG(sp - 1);        long64 lvalue = GET_LONG(sp - 3);        if (ll_zero_eq(rvalue)) {            goto handleArithmeticException;        } else {            SET_LONG(sp - 3, ll_rem(lvalue, rvalue));            lessStack(2);        }DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FREM)                            /* Rem float */        float rvalue = *(float*)sp--;        float lvalue = *(float*)sp;        double result = DOUBLE_REMAINDER(lvalue, rvalue);        *(float *)sp = (float)result;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DREM)                            /* Rem double */        double rvalue = GET_DOUBLE(sp-1);        double lvalue = GET_DOUBLE(sp-3);        double result = DOUBLE_REMAINDER(lvalue, rvalue);        SET_DOUBLE(sp-3,  result);        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(INEG)                            /* Negate integer */        *(long*)sp = 0 - *(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LNEG)                            /* Negate long */        long64 lvalue = GET_LONG(sp - 1);        ll_negate(lvalue);        SET_LONG(sp - 1, lvalue);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FNEG)                            /* Negate float */        *(float*)sp = 0.0f - *(float*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DNEG)                            /* Negate double */        double value = - GET_DOUBLE(sp-1);        SET_DOUBLE(sp-1,  value);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISHL)                    /* Arithmetic shift left integer */        /* Note: shift range is limited to 31 (0x1F) */        long s = popStack() & 0x0000001F;        *(long*)sp <<= s;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSHL)                    /* Arithmetic shift left long */        /* Note: shift range is limited to 63 (0x3F) */        long s = popStack() & 0x0000003F;        long64 value = GET_LONG(sp - 1);        SET_LONG(sp - 1, ll_shl(value, s));DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISHR)                    /* Arithmetic shift right integer */        /* Note: shift range is limited to 31 (0x1F) */        long s = popStack() & 0x0000001F;        /* Extends sign for negative numbers */        *(long*)sp >>= s;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSHR)                     /* Arithmetic shift right long */        /* Note: shift range is limited to 63 (0x3F) */        long s = popStack() & 0x0000003F;        long64 value = GET_LONG(sp - 1);        SET_LONG(sp - 1, ll_shr(value, s));DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IUSHR)                   /* Logical shift right integer */        long s = popStack() & 0x0000001F;        *(unsigned long*)sp >>= s;      /* No sign extension */DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LUSHR)                           /* Logical shift right long */        long s = popStack() & 0x0000003F;

⌨️ 快捷键说明

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