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

📄 bytecodes.c

📁 Nucleus_2_kvm_Hello 是kvm移植到Nucleus系统的源代码。。。好东西啊
💻 C
📖 第 1 页 / 共 5 页
字号:
        long64 value = GET_LONG(sp - 1);        SET_LONG(sp - 1, ll_ushr(value, s));DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IAND)                            /* Boolean integer AND */        long temp = popStack();        topStack &= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LAND)                            /* Boolean long AND */        thirdStack  &= topStack;        fourthStack &= secondStack;        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IOR)                             /* Boolean integer OR */        long temp = popStack();        topStack |= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LOR)                             /* Boolean long OR */        thirdStack  |= topStack;        fourthStack |= secondStack;        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IXOR)                            /* Boolean integer XOR */        long temp = popStack();        topStack ^= temp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LXOR)                            /* Boolean long XOR */        thirdStack  ^= topStack;        fourthStack ^= secondStack;        lessStack(2);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IINC)                            /* Increment local variable */        unsigned int index = ip[1];        long value = ((signed char *)ip)[2];        lp[index] = ((long)(lp[index]) + value);DONE(3)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2L)                             /* Convert integer to long */        long value = *(long *)sp;#if BIG_ENDIAN        ((long *)sp)[1] = value;        ((long *)sp)[0] = value >> 31;#elif LITTLE_ENDIAN || !COMPILER_SUPPORTS_LONG        ((long *)sp)[1] = value >> 31;#else        SET_LONG(sp, value);#endif        oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(I2F)                             /* Convert integer to float */        *(float*)sp = (float)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(I2D)                             /* Convert integer to double */        SET_DOUBLE(sp, (double)*(long*)sp);        oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(L2I)                             /* Convert long to integer */        oneLess;#if BIG_ENDIAN        sp[0] = sp[1];#elif LITTLE_ENDIAN || !COMPILER_SUPPORTS_LONG        /* do nothing */#else        sp[0] = (long)(GET_LONG(sp));#endifDONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(L2F)                             /* Convert long to float */        oneLess;        *(float*)sp = ll2float(GET_LONG(sp));DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(L2D)                             /* Convert long to double */        double value = ll2double(GET_LONG(sp - 1));        SET_DOUBLE(sp-1, value);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(F2I)                             /* Convert float to integer */        *(long*)sp = (long)*(float*)sp;;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(F2L)                             /* Convert float to long */        SET_LONG(sp, float2ll(*(float*)sp));        oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(F2D)                             /* Convert float to double */        SET_DOUBLE(sp, (double)*(float*)sp);        oneMore;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(D2I)                             /* Convert double to integer */        oneLess;        *(long*)sp = (long)GET_DOUBLE(sp);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(D2L)                             /* Convert double to long */        long64 value = double2ll(GET_DOUBLE( sp - 1));        SET_LONG(sp - 1, value);DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(D2F)                             /* Convert double to float */        oneLess;        *(float*)sp = (float)GET_DOUBLE(sp);;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2B)             /* Convert integer to byte (with sign extension) */        *(long*)sp = (signed char)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2C)             /* Convert integer to UNICODE character */        *(long*)sp = (unsigned short)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(I2S)            /* Convert integer to short (with sign extension) */        *(long*)sp = (short)*(long*)sp;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LCMP)                            /* Compare long */        long result;#if COMPILER_SUPPORTS_LONG        long64 rvalue = GET_LONG(sp-1);        long64 lvalue = GET_LONG(sp-3);        result = lvalue < rvalue ? -1 : lvalue == rvalue ? 0 : 1;#else        long64 *rvalue = (long64*)(sp-1);        long64 *lvalue = (long64*)(sp-3);        signed long highLeft =  (signed long)(lvalue->high);        signed long highRight = (signed long)(rvalue->high);        if (highLeft == highRight) {            unsigned long lowLeft =  (unsigned long)(lvalue->low);            unsigned long lowRight = (unsigned long)(rvalue->low);            result = (lowLeft < lowRight ? -1 : lowLeft > lowRight ? 1 : 0);        } else {            result = highLeft < highRight ? -1 : 1;        }#endif        lessStack(3);        *(long *)sp = result;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FCMPL)                            /* Compare float */        double rvalue = *(float*)sp;        double lvalue = *(float*)(sp-1);        oneLess;        *(long*)sp = (lvalue < rvalue)  ? -1 :                     (lvalue == rvalue) ?  0 :                     (lvalue > rvalue)  ?  1 :                     (TOKEN & 01)       ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FCMPG)                            /* Compare float */        double rvalue = *(float*)sp;        double lvalue = *(float*)(sp-1);        oneLess;        *(long*)sp = (lvalue < rvalue)  ? -1 :                     (lvalue == rvalue) ?  0 :                     (lvalue > rvalue)  ?  1 :                     (TOKEN & 01)       ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DCMPL)                            /* Compare double */        double rvalue = GET_DOUBLE(sp-1);        double lvalue = GET_DOUBLE(sp-3);        lessStack(3);        *(long*)sp = (lvalue < rvalue)  ? -1 :                     (lvalue == rvalue) ?  0 :                     (lvalue > rvalue)  ?  1 :                     (TOKEN & 01)       ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DCMPG)                            /* Compare double */        double rvalue = GET_DOUBLE(sp-1);        double lvalue = GET_DOUBLE(sp-3);        lessStack(3);        *(long*)sp = (lvalue < rvalue)  ? -1 :                     (lvalue == rvalue) ?  0 :                     (lvalue > rvalue)  ?  1 :                     (TOKEN & 01)       ? -1 : 1;DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFEQ)                            /* Branch if equal to zero */        BRANCHIF( (popStack() == 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFNE)                            /* Branch if different than zero */        BRANCHIF( (popStack() != 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFLT)                            /* Branch if less than zero */        BRANCHIF( ((long)popStack() < 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFGE)                       /* Branch if greater or equal to zero */        BRANCHIF( ((long)popStack() >= 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFGT)                            /* Branch if greater than zero */        BRANCHIF( ((long)popStack() > 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IFLE)                         /* Branch if less or equal to zero */        BRANCHIF( ((long)popStack() <= 0) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPEQ)                       /* Branch if equal */        long b = popStack();        long a = popStack();        BRANCHIF( (a == b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPNE)                       /* Branch if not equal */        long b = popStack();        long a = popStack();        BRANCHIF( (a != b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPLT)                       /* Branch if less than */        long b = popStack();        long a = popStack();        BRANCHIF( (a < b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPGE)                       /* Branch if greater or equal */        long b = popStack();        long a = popStack();        BRANCHIF( (a >= b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPGT)                       /* Branch if greater */        long b = popStack();        long a = popStack();        BRANCHIF( (a > b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ICMPLE)                       /* Branch if less or equal */        long b = popStack();        long a = popStack();        BRANCHIF( (a <= b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ACMPEQ)                     /* Branch if references are equal */        long b = popStack();        long a = popStack();        BRANCHIF( (a == b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IF_ACMPNE)                  /* Branch if references are not equal */        long b = popStack();        long a = popStack();        BRANCHIF( (a != b) )DONEX#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(GOTO)                       /* Branch if references are not equal */        ip += getShort(ip + 1);DONE_R#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODES

⌨️ 快捷键说明

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