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

📄 bytecodefragments.java

📁 JPC: x86 PC Hardware Emulator. 牛津大学开发的一个纯JAVA的x86系统结构硬件模拟器。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
									   new Integer(JavaOpcode.INVOKEVIRTUAL), method("setSignFlag", Boolean.TYPE) };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_TFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsTrap") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IFLAG] = new Object[] { new Integer(JavaOpcode.DUP),									   new Integer(JavaOpcode.ALOAD_1),									   new Integer(JavaOpcode.DUP_X2),									   new Integer(JavaOpcode.SWAP),									   new Integer(JavaOpcode.PUTFIELD), field("eflagsInterruptEnable"),									   new Integer(JavaOpcode.PUTFIELD), field("eflagsInterruptEnableSoon") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_DFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsDirection") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_OFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.INVOKEVIRTUAL), method("setOverflowFlag", Boolean.TYPE) };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IOPL] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsIOPrivilegeLevel") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_NTFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsNestedTask") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_RFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsResume") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_VMFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsVirtual8086Mode") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_ACFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsAlignmentCheck") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_VIFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsVirtualInterrupt") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_VIPFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsVirtualInterruptPending") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IDFLAG] = new Object[] { new Integer(JavaOpcode.ALOAD_1), 									   new Integer(JavaOpcode.SWAP), 									   new Integer(JavaOpcode.PUTFIELD), field("eflagsID") };        	        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_ES] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									new Integer(JavaOpcode.SWAP),									new Integer(JavaOpcode.PUTFIELD), field("es") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_CS] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									new Integer(JavaOpcode.SWAP),									new Integer(JavaOpcode.PUTFIELD), field("cs") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_SS] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									new Integer(JavaOpcode.SWAP),									new Integer(JavaOpcode.PUTFIELD), field("ss") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_DS] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									new Integer(JavaOpcode.SWAP),									new Integer(JavaOpcode.PUTFIELD), field("ds") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_FS] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									new Integer(JavaOpcode.SWAP),									new Integer(JavaOpcode.PUTFIELD), field("fs") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_GS] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									new Integer(JavaOpcode.SWAP),									new Integer(JavaOpcode.PUTFIELD), field("gs") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_IDTR] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									  new Integer(JavaOpcode.SWAP),									  new Integer(JavaOpcode.PUTFIELD), field("idtr") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_GDTR] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									  new Integer(JavaOpcode.SWAP),									  new Integer(JavaOpcode.PUTFIELD), field("gdtr") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_LDTR] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									  new Integer(JavaOpcode.SWAP),									  new Integer(JavaOpcode.PUTFIELD), field("ldtr") };        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_TSS] = new Object[] { new Integer(JavaOpcode.ALOAD_1),									  new Integer(JavaOpcode.SWAP),									  new Integer(JavaOpcode.PUTFIELD), field("tss") };	        popCodeArray[FASTCompiler.PROCESSOR_ELEMENT_ADDR0] = new Object[] { new Integer(JavaOpcode.POP) };    }        protected BytecodeFragments() {}    public static Object[] pushCode(int element)    {        Object[] temp = pushCodeArray[element];        if (temp == null)             throw new IllegalStateException("Non existant CPU Element: "+element);        return temp;    }    public static Object[] popCode(int element)    {        Object[] temp = popCodeArray[element];        if (temp == null)             throw new IllegalStateException("Non existant CPU Element: "+element);        return temp;    }    public static Object field(String name)    {        try {            return new ConstantPoolSymbol(Processor.class.getDeclaredField(name));        } catch (NoSuchFieldException e) {            throw new IllegalStateException(e);        }    }    public static Object field(Class cls, String name)    {        try {            return new ConstantPoolSymbol(cls.getDeclaredField(name));        } catch (NoSuchFieldException e) {            throw new IllegalStateException(e);        }    }    public static Object method(String name)    {        return method(name, new Class[0]);    }    public static Object method(String name, Class arg)    {        return method(name, new Class[]{arg});    }    public static Object method(String name, Class arg0, Class arg1)    {        return method(name, new Class[]{arg0, arg1});    }    public static Object method(String name, Class[] args)    {        try {            return new ConstantPoolSymbol(Processor.class.getDeclaredMethod(name, args));        } catch (NoSuchMethodException e) {            throw new IllegalStateException(e);        }    }    public static Object method(Class cls, String name)    {        return method(cls, name, new Class[0]);    }    public static Object method(Class cls, String name, Class arg)    {        return method(cls, name, new Class[]{arg});    }    public static Object method(Class cls, String name, Class arg0, Class arg1)    {        return method(cls, name, new Class[]{arg0, arg1});    }    public static Object method(Class cls, String name, Class arg0, Class arg1, Class arg2)    {        return method(cls, name, new Class[]{arg0, arg1, arg2});    }    public static Object method(Class cls, String name, Class[] args)    {        try {            return new ConstantPoolSymbol(cls.getMethod(name, args));        } catch (NoSuchMethodException e) {            throw new IllegalStateException(e);        }    }    public static Object integer(int value)    {        return new ConstantPoolSymbol(new Integer(value));    }    public static Object longint(long value)    {	return new ConstantPoolSymbol(new Long(value));    }    }

⌨️ 快捷键说明

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