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

📄 code-analyse.c

📁 kaffe Java 解释器语言,源码,Java的子集系统,开放源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
			STKPOP(1);			INCPC(2);			break;		case LSTORE_0:		case LSTORE_1:		case LSTORE_2:		case LSTORE_3:			lcl = INSN(pc) - LSTORE_0;			LOCALOUT_STACK(lcl, TLONG, 0);			LOCALOUT_STACK(lcl+1, TVOID, 1);			STKPOP(2);			INCPC(1);			break;		case LSTORE:			if (wide) {				lcl = WORD(pc+1);				LOCALOUT_STACK(lcl, TLONG, 0);				LOCALOUT_STACK(lcl+1, TVOID, 1);				INCPC(1);				wide = false;			}			else {				lcl = BYTE(pc+1);				LOCALOUT_STACK(lcl, TLONG, 0);				LOCALOUT_STACK(lcl+1, TVOID, 1);			}			STKPOP(2);			INCPC(2);			break;		case FSTORE_0:		case FSTORE_1:		case FSTORE_2:		case FSTORE_3:			lcl = INSN(pc) - FSTORE_0;			STACKIN(0, TFLOAT);			LOCALOUT(lcl, TFLOAT);			STKPOP(1);			INCPC(1);			break;		case FSTORE:			STACKIN(0, TFLOAT);			if (wide) {				LOCALOUT(WORD(pc+1), TFLOAT);				INCPC(1);				wide = false;			}			else {				LOCALOUT(BYTE(pc+1), TFLOAT);			}			STKPOP(1);			INCPC(2);			break;		case DSTORE_0:		case DSTORE_1:		case DSTORE_2:		case DSTORE_3:			lcl = INSN(pc) - DSTORE_0;			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			LOCALOUT(lcl, TDOUBLE);			LOCALOUT(lcl+1, TVOID);			STKPOP(2);			INCPC(1);			break;		case DSTORE:			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			if (wide) {				LOCALOUT(WORD(pc+1), TDOUBLE);				LOCALOUT(WORD(pc+1)+1, TVOID);				INCPC(1);				wide = false;			}			else {				LOCALOUT(BYTE(pc+1), TDOUBLE);				LOCALOUT(BYTE(pc+1)+1, TVOID);			}			STKPOP(2);			INCPC(2);			break;		case ASTORE_0:		case ASTORE_1:		case ASTORE_2:		case ASTORE_3:			lcl = INSN(pc) - ASTORE_0;			LOCALOUT_STACK(lcl, TOBJ, 0);			STKPOP(1);			INCPC(1);			break;		case ASTORE:			if (wide) {				LOCALOUT_STACK(WORD(pc+1), TOBJ, 0);				INCPC(1);				wide = false;			}			else {				LOCALOUT_STACK(BYTE(pc+1), TOBJ, 0);			}			STKPOP(1);			INCPC(2);			break;		case BASTORE:			STACKIN(0, TINT);			STACKIN(1, TINT);			STACKIN(2, TOBJ);			STKPOP(3);			INCPC(1);			break;		case IASTORE:			STACKIN(0, TINT);			STACKIN(1, TINT);			STACKIN(2, TOBJ);			STKPOP(3);			INCPC(1);			break;		case CASTORE:		case SASTORE:			STACKIN(0, TINT);			STACKIN(1, TINT);			STACKIN(2, TOBJ);			STKPOP(3);			INCPC(1);			break;		case LASTORE:			STACKIN(3, TOBJ);			STACKIN(2, TINT);			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STKPOP(4);			INCPC(1);			break;		case FASTORE:			STACKIN(2, TOBJ);			STACKIN(1, TINT);			STACKIN(0, TFLOAT);			STKPOP(3);			INCPC(1);			break;		case DASTORE:			STACKIN(3, TOBJ);			STACKIN(2, TINT);			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STKPOP(4);			INCPC(1);			break;		case AASTORE:			STACKIN(2, TOBJ);			STACKIN(1, TINT);			STACKIN(0, TOBJ);			STKPOP(3);			INCPC(1);			break;		case POP:			STKPOP(1);			INCPC(1);			break;		case POP2:			STKPOP(2);			INCPC(1);			break;		case DUP:			STKPUSH(1);			STACKCOPY(1, 0);			INCPC(1);			break;		case DUP_X1:			STKPUSH(1);			STACKCOPY(1, 0);			STACKCOPY(2, 1);			STACKCOPY(0, 2);			INCPC(1);			break;		case DUP_X2:			STKPUSH(1);			STACKCOPY(1, 0);			STACKCOPY(2, 1);			STACKCOPY(3, 2);			STACKCOPY(0, 3);			INCPC(1);			break;		case DUP2:			STKPUSH(2);			STACKCOPY(2, 0);			STACKCOPY(3, 1);			STACKCOPY(2, 2);			STACKCOPY(3, 3);			INCPC(1);			break;		case DUP2_X1:			STKPUSH(2);			STACKCOPY(2, 0);			STACKCOPY(3, 1);			STACKCOPY(4, 2);			STACKCOPY(0, 3);			STACKCOPY(1, 4);			INCPC(1);			break;		case DUP2_X2:			STKPUSH(2);			STACKCOPY(2, 0);			STACKCOPY(3, 1);			STACKCOPY(4, 2);			STACKCOPY(5, 3);			STACKCOPY(0, 4);			STACKCOPY(1, 5);			INCPC(1);			break;		case SWAP:			STACKSWAP(0, 1);			INCPC(1);			break;		case IAND:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case IOR:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case IXOR:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case IADD:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case IMUL:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case ISUB:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case IDIV:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case IREM:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case LADD:		case LSUB:		case LMUL:		case LDIV:		case LREM:		case LAND:		case LOR:		case LXOR:			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STACKIN(2, TLONG);			STACKIN(3, TVOID);			STKPOP(2);			STACKOUT(0, TLONG);			STACKOUT(1, TVOID);			INCPC(1);			break;		case FADD:		case FSUB:		case FMUL:		case FDIV:		case FREM:			STACKIN(1, TFLOAT);			STACKIN(0, TFLOAT);			STKPOP(1);			STACKOUT(0, TFLOAT);			INCPC(1);			break;		case DADD:		case DSUB:		case DMUL:		case DDIV:		case DREM:			STACKIN(2, TDOUBLE);			STACKIN(3, TVOID);			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STKPOP(2);			STACKOUT(0, TDOUBLE);			STACKOUT(1, TVOID);			INCPC(1);			break;		case INEG:			STACKIN(0, TINT);			STACKOUT(0, TINT);			INCPC(1);			break;		case LNEG:			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STACKOUT(0, TLONG);			STACKOUT(1, TVOID);			INCPC(1);			break;		case FNEG:			STACKIN(0, TFLOAT);			STACKOUT(0, TFLOAT);			INCPC(1);			break;		case DNEG:			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STACKOUT(0, TDOUBLE);			STACKOUT(1, TVOID);			INCPC(1);			break;		case ISHL:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case ISHR:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case IUSHR:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case LSHL:		case LSHR:		case LUSHR:			STACKIN(0, TINT);			STACKIN(1, TLONG);			STACKIN(2, TVOID);			STKPOP(1);			STACKOUT(0, TLONG);			STACKOUT(1, TVOID);			INCPC(1);			break;		case IINC:			if (wide) {				LOCALINOUT(WORD(pc+1), TINT);				INCPC(2);				wide = false;			}			else {				LOCALINOUT(BYTE(pc+1), TINT);			}			INCPC(3);			break;		case I2L:			STACKIN(0, TINT);			STKPUSH(1);			STACKOUT(0, TLONG);			STACKOUT(1, TVOID);			INCPC(1);			break;		case I2F:			STACKIN(0, TINT);			STACKOUT(0, TFLOAT);			INCPC(1);			break;		case I2D:			STACKIN(0, TINT);			STKPUSH(1);			STACKOUT(0, TDOUBLE);			STACKOUT(1, TVOID);			INCPC(1);			break;		case L2I:			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case L2F:			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STKPOP(1);			STACKOUT(0, TFLOAT);			INCPC(1);			break;		case L2D:			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STACKOUT(0, TDOUBLE);			STACKOUT(1, TVOID);			INCPC(1);			break;		case F2I:			STACKIN(0, TFLOAT);			STACKOUT(0, TINT);			INCPC(1);			break;		case F2L:			STACKIN(0, TFLOAT);			STKPUSH(1);			STACKOUT(0, TLONG);			STACKOUT(1, TVOID);			INCPC(1);			break;		case F2D:			STACKIN(0, TFLOAT);			STKPUSH(1);			STACKOUT(0, TDOUBLE);			STACKOUT(1, TVOID);			INCPC(1);			break;		case D2I:			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case D2L:			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STACKOUT(0, TLONG);			STACKOUT(1, TVOID);			INCPC(1);			break;		case D2F:			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STKPOP(1);			STACKOUT(0, TFLOAT);			INCPC(1);			break;		case INT2BYTE:		case INT2CHAR:		case INT2SHORT:			STACKIN(0, TINT);			STACKOUT(0, TINT);			INCPC(1);			break;		case LCMP:			STACKIN(2, TLONG);			STACKIN(3, TVOID);			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STKPOP(3);			STACKOUT(0, TINT);			INCPC(1);			break;		case FCMPL:		case FCMPG:			STACKIN(1, TFLOAT);			STACKIN(0, TFLOAT);			STKPOP(1);			STACKOUT(0, TINT);			INCPC(1);			break;		case DCMPL:		case DCMPG:			STACKIN(2, TDOUBLE);			STACKIN(3, TVOID);			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STKPOP(3);			STACKOUT(0, TINT);			INCPC(1);			break;		case IFEQ:		case IFNE:		case IFLT:		case IFGE:		case IFGT:		case IFLE:			STACKIN(0, TINT);			STKPOP(1);			FRAMEMERGE(pc + WORD(pc+1), sp);			FRAMEMERGE(pc + 3, sp);			INCPC(3);			break;		case IF_ICMPEQ:		case IF_ICMPNE:		case IF_ICMPLT:		case IF_ICMPGT:		case IF_ICMPGE:		case IF_ICMPLE:			STACKIN(0, TINT);			STACKIN(1, TINT);			STKPOP(2);			FRAMEMERGE(pc + WORD(pc+1), sp);			FRAMEMERGE(pc + 3, sp);			INCPC(3);			break;		case IF_ACMPEQ:		case IF_ACMPNE:			STACKIN(0, TOBJ);			STACKIN(1, TOBJ);			STKPOP(2);			FRAMEMERGE(pc + WORD(pc+1), sp);			FRAMEMERGE(pc + 3, sp);			INCPC(3);			break;		case GOTO:			FRAMEMERGE(pc + WORD(pc+1), sp);			INCPC(3);			break;		case GOTO_W:			FRAMEMERGE(pc + DWORD(pc+1), sp);			INCPC(5);			break;		case JSR:			STKPUSH(1);			STACKOUT(0, TADDR);			FRAMEMERGE(pc + WORD(pc+1), sp);			STKPOP(1);			FRAMEMERGE(pc + 3, sp);			INCPC(3);			break;		case JSR_W:			STKPUSH(1);			STACKOUT(0, TADDR);			FRAMEMERGE(pc + DWORD(pc+1), sp);			STKPOP(1);			FRAMEMERGE(pc + 5, sp);			INCPC(5);			break;		case RET:			LOCALIN(BYTE(pc+1), TADDR);			INCPC(2);			break;		case LOOKUPSWITCH:			STACKIN(0, TINT);			STKPOP(1);			tabpc = (pc + 4) & -4;			idx = DWORD(tabpc+4);			for (; idx > 0; idx--) {				FRAMEMERGE(pc+DWORD(tabpc+idx*8+4), sp);			}			FRAMEMERGE(pc + DWORD(tabpc), sp);			pc = tabpc + (DWORD(tabpc+4)+1) * 8;			break;		case TABLESWITCH:			STACKIN(0, TINT);			STKPOP(1);			tabpc = (pc + 4) & -4;			idx = DWORD(tabpc+8)-DWORD(tabpc+4)+1;			for (; idx > 0; idx--) {				FRAMEMERGE(pc+DWORD(tabpc+idx*4+8), sp);			}			FRAMEMERGE(pc + DWORD(tabpc), sp);			pc = tabpc + (DWORD(tabpc+8)-DWORD(tabpc+4)+1+3) * 4;			break;		case IRETURN:			STACKIN(0, TINT);			STKPOP(1);			INCPC(1);			break;		case LRETURN:			STACKIN(0, TLONG);			STACKIN(1, TVOID);			STKPOP(2);			INCPC(1);			break;		case FRETURN:			STACKIN(0, TFLOAT);			STKPOP(1);			INCPC(1);			break;		case DRETURN:			STACKIN(0, TDOUBLE);			STACKIN(1, TVOID);			STKPOP(2);			INCPC(1);			break;		case ARETURN:			STACKIN(0, TOBJ);			STKPOP(1);			INCPC(1);			break;		case RETURN:			INCPC(1);			break;		case GETSTATIC:			if (getField(WORD(pc+1), meth->class, true, &finfo, einfo) == 0) {				if (!checkNoClassDefFoundError(einfo)) {					failed = true;					goto done;				}			}			switch (finfo.signature->data[0]){			case 'I':			case 'Z':			case 'S':			case 'B':			case 'C':				STKPUSH(1);				STACKOUT(0, TINT);				break;			case 'F':				STKPUSH(1);				STACKOUT(0, TFLOAT);				break;			case 'J':				STKPUSH(2);				STACKOUT(0, TLONG);				STACKOUT(1, TVOID);				break;			case 'D':				STKPUSH(2);				STACKOUT(0, TDOUBLE);				STACKOUT(1, TVOID);				break;			case '[':

⌨️ 快捷键说明

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