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

📄 bytecodes.c

📁 Nucleus_2_kvm_Hello 是kvm移植到Nucleus系统的源代码。。。好东西啊
💻 C
📖 第 1 页 / 共 5 页
字号:
/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ALOAD_3)         /* Load integer from fourth local variable */        pushStack(lp[3]);DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IALOAD)          /* Load integer from array */        long      index = popStack();        ARRAY thisArray = topStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            topStack = thisArray->data[index].cell;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LALOAD)          /* Load long from array */        long      index = topStack;        ARRAY thisArray = secondStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            secondStack = thisArray->data[index * 2].cell;            topStack    = thisArray->data[index * 2 + 1].cell;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FALOAD)          /* Load float from array */        long      index = popStack();        ARRAY thisArray = topStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            topStack = thisArray->data[index].cell;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DALOAD)          /* Load double from array */        long      index = topStack;        ARRAY thisArray = secondStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            secondStack = thisArray->data[index * 2].cell;            topStack    = thisArray->data[index * 2 + 1].cell;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(AALOAD)          /* Load address from array */        long      index = popStack();        ARRAY thisArray = topStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            topStack = thisArray->data[index].cell;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(BALOAD)          /* Load byte from array */        long      index = popStack();        BYTEARRAY thisArray = topStackAsType(BYTEARRAY);        CHECKARRAY(thisArray, index);            topStack = (long)thisArray->bdata[index];        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(CALOAD)          /* Load UNICODE character (16 bits) from array */        long       index = popStack();        SHORTARRAY thisArray = topStackAsType(SHORTARRAY);        CHECKARRAY(thisArray, index);            topStack = (thisArray->sdata[index]&0xFFFF);        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(SALOAD)          /* Load short from array */        long       index = popStack();        SHORTARRAY thisArray = topStackAsType(SHORTARRAY);        CHECKARRAY(thisArray, index);            topStack = thisArray->sdata[index];        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISTORE)          /* Store integer into local variable */        unsigned int index = ip[1];        lp[index] = popStack();DONE(2)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSTORE)          /* Store long into local variable */        unsigned int index = ip[1];        lp[index+1] = popStack();        lp[index]   = popStack();DONE(2)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FSTORE)          /* Store integer into local variable */        unsigned int index = ip[1];        lp[index] = popStack();DONE(2)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DSTORE)          /* Store double into local variable */        unsigned int index = ip[1];        lp[index+1] = popStack();        lp[index]   = popStack();DONE(2)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ASTORE)          /* Store reference into local variable */        unsigned int index = ip[1];        lp[index] = popStack();DONE(2)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISTORE_0)    /* Store integer into first (zeroeth) local variable */        lp[0] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISTORE_1)        /* Store integer into second local variable */        lp[1] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISTORE_2)        /* Store integer into third local variable */        lp[2] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ISTORE_3)        /* Store integer into fourth local variable */        lp[3] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSTORE_0)       /* Store long into first (zeroeth) local variable */        lp[1] = popStack();        lp[0] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSTORE_1)        /* Store long into second local variable */        lp[2] = popStack();        lp[1] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSTORE_2)        /* Store long into third local variable */        lp[3] = popStack();        lp[2] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LSTORE_3)        /* Store long into fourth local variable */        lp[4] = popStack();        lp[3] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FSTORE_0)      /* Store float into first (zeroeth) local variable */        lp[0] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FSTORE_1)        /* Store float into second local variable */        lp[1] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FSTORE_2)        /* Store float into third local variable */        lp[2] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FSTORE_3)        /* Store float into fourth local variable */        lp[3] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DSTORE_0)     /* Store double into first (zeroeth) local variable */        lp[1] = popStack();        lp[0] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DSTORE_1)        /* Store double into second local variable */        lp[2] = popStack();        lp[1] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DSTORE_2)        /* Store double into third local variable */        lp[3] = popStack();        lp[2] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DSTORE_3)        /* Store double into fourth local variable */        lp[4] = popStack();        lp[3] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ASTORE_0)    /* Store address into first (zeroeth) local variable */        lp[0] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ASTORE_1)        /* Store address into second local variable */        lp[1] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ASTORE_2)        /* Store address into third local variable */        lp[2] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(ASTORE_3)        /* Store address into fourth local variable */        lp[3] = popStack();DONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(IASTORE)         /* Store into integer array */        long      value = popStack();        long      index = popStack();        ARRAY thisArray = popStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            thisArray->data[index].cell = value;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(LASTORE)         /* Store into long array */        cell  hiValue   = popStack();        cell  loValue   = popStack();        long  index     = popStack();        ARRAY thisArray = popStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            thisArray->data[index * 2].cell     = loValue;            thisArray->data[index * 2 + 1].cell = hiValue;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(FASTORE)         /* Store into float array */        long      value = popStack();        long      index = popStack();        ARRAY thisArray = popStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            thisArray->data[index].cell = value;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if FLOATBYTECODESSELECT(DASTORE)         /* Store into double array */        cell  hiValue   = popStack();        cell  loValue   = popStack();        long  index     = popStack();        ARRAY thisArray = popStackAsType(ARRAY);        CHECKARRAY(thisArray, index);            thisArray->data[index * 2].cell = loValue;            thisArray->data[index * 2 + 1].cell = hiValue;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(AASTORE)         /* Store into object array */        /* We cannot pop these off the stack, since a GC might happen         * before we perform the assignment */        OBJECT    value = topStackAsType(OBJECT);        long      index = secondStack;        ARRAY     thisArray = thirdStackAsType(ARRAY);        int res;        CLASS targetClass;        CHECKARRAY(thisArray, index);            targetClass = thisArray->ofClass->u.elemClass;            if (value == NULL ||                   isAssignableToFast(value->ofClass, targetClass)) {                res = TRUE;            } else {                VMSAVE                    /* This may cause a GC */                    res = isAssignableTo(value->ofClass, targetClass);                VMRESTORE                /* GC may have occurred, need to update volatile args */                value = topStackAsType(OBJECT);                thisArray = thirdStackAsType(ARRAY);            }            lessStack(3);            if (res) {                thisArray->data[index].cellp = (cell*)value;            } else {                goto handleArrayStoreException;            }        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(BASTORE)         /* Store into byte array */        long value = popStack();        long index = popStack();        BYTEARRAY thisArray = popStackAsType(BYTEARRAY);        CHECKARRAY(thisArray, index);            thisArray->bdata[index] = (char)value;        ENDCHECKARRAYDONE(1)#endif/* --------------------------------------------------------------------- */#if STANDARDBYTECODESSELECT(CASTORE)         /* Store into UNICODE character (16-bit) array */        long value = popStack();        long index = popStack();        SHORTARRAY thisArray = popStackAsType(SHORTARRAY);        CHECKARRAY(thisArray, index);            thisArray->sdata[index] = (short)value;        ENDCHECKARRAYDONE(1)#endif

⌨️ 快捷键说明

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